occam-verify-cli 1.0.984 → 1.0.986

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 (423) hide show
  1. package/lib/action/verify.js +22 -27
  2. package/lib/constants.js +1 -41
  3. package/lib/index.js +1 -2
  4. package/lib/utilities/fileContext.js +3 -8
  5. package/lib/utilities/releaseContext.js +2 -2
  6. package/package.json +2 -5
  7. package/src/action/verify.js +8 -18
  8. package/src/constants.js +0 -10
  9. package/src/index.js +0 -2
  10. package/src/utilities/fileContext.js +1 -2
  11. package/src/utilities/releaseContext.js +1 -1
  12. package/lib/context/aphasic.js +0 -27
  13. package/lib/context/bounded.js +0 -244
  14. package/lib/context/branching.js +0 -61
  15. package/lib/context/file/nominal.js +0 -586
  16. package/lib/context/illative.js +0 -28
  17. package/lib/context/liminal.js +0 -200
  18. package/lib/context/literal.js +0 -44
  19. package/lib/context/mnemic.js +0 -454
  20. package/lib/context/nested.js +0 -31
  21. package/lib/context/nominal.js +0 -57
  22. package/lib/context/phaneric.js +0 -44
  23. package/lib/context/thetic.js +0 -28
  24. package/lib/context.js +0 -445
  25. package/lib/element/assertion/contained.js +0 -218
  26. package/lib/element/assertion/defined.js +0 -213
  27. package/lib/element/assertion/property.js +0 -176
  28. package/lib/element/assertion/signature.js +0 -170
  29. package/lib/element/assertion/subproof.js +0 -220
  30. package/lib/element/assertion/type.js +0 -227
  31. package/lib/element/assertion.js +0 -49
  32. package/lib/element/assumption/metaLevel.js +0 -244
  33. package/lib/element/assumption.js +0 -252
  34. package/lib/element/combinator/bracketed.js +0 -36
  35. package/lib/element/combinator.js +0 -104
  36. package/lib/element/conclusion.js +0 -131
  37. package/lib/element/constructor/bracketed.js +0 -57
  38. package/lib/element/constructor.js +0 -129
  39. package/lib/element/declaration/combinator.js +0 -58
  40. package/lib/element/declaration/complexType.js +0 -180
  41. package/lib/element/declaration/constructor.js +0 -93
  42. package/lib/element/declaration/metavariable.js +0 -77
  43. package/lib/element/declaration/property.js +0 -88
  44. package/lib/element/declaration/simpleType.js +0 -148
  45. package/lib/element/declaration/typePrefix.js +0 -53
  46. package/lib/element/declaration/variable.js +0 -99
  47. package/lib/element/declaration.js +0 -15
  48. package/lib/element/deduction.js +0 -131
  49. package/lib/element/derivation.js +0 -46
  50. package/lib/element/equality.js +0 -211
  51. package/lib/element/equivalence.js +0 -200
  52. package/lib/element/error.js +0 -27
  53. package/lib/element/frame.js +0 -238
  54. package/lib/element/hypothesis.js +0 -135
  55. package/lib/element/judgement.js +0 -212
  56. package/lib/element/label.js +0 -135
  57. package/lib/element/metaType.js +0 -57
  58. package/lib/element/metavariable.js +0 -452
  59. package/lib/element/parameter.js +0 -69
  60. package/lib/element/procedureCall.js +0 -116
  61. package/lib/element/procedureReference.js +0 -56
  62. package/lib/element/proof.js +0 -52
  63. package/lib/element/proofAssertion/premise.js +0 -238
  64. package/lib/element/proofAssertion/step.js +0 -235
  65. package/lib/element/proofAssertion/supposition.js +0 -249
  66. package/lib/element/proofAssertion.js +0 -56
  67. package/lib/element/property.js +0 -176
  68. package/lib/element/propertyRelation.js +0 -132
  69. package/lib/element/reference.js +0 -227
  70. package/lib/element/rule.js +0 -242
  71. package/lib/element/section.js +0 -64
  72. package/lib/element/signature.js +0 -195
  73. package/lib/element/statement.js +0 -228
  74. package/lib/element/subDerivation.js +0 -46
  75. package/lib/element/subproof.js +0 -91
  76. package/lib/element/substitution/frame.js +0 -256
  77. package/lib/element/substitution/reference.js +0 -192
  78. package/lib/element/substitution/statement.js +0 -294
  79. package/lib/element/substitution/term.js +0 -266
  80. package/lib/element/substitution.js +0 -183
  81. package/lib/element/term.js +0 -217
  82. package/lib/element/topLevelAssertion/axiom.js +0 -158
  83. package/lib/element/topLevelAssertion/conjecture.js +0 -42
  84. package/lib/element/topLevelAssertion/lemma.js +0 -39
  85. package/lib/element/topLevelAssertion/theorem.js +0 -42
  86. package/lib/element/topLevelAssertion.js +0 -286
  87. package/lib/element/topLevelMetaAssertion/metaLemma.js +0 -42
  88. package/lib/element/topLevelMetaAssertion/metatheorem.js +0 -42
  89. package/lib/element/topLevelMetaAssertion.js +0 -179
  90. package/lib/element/type.js +0 -240
  91. package/lib/element/typePrefix.js +0 -85
  92. package/lib/element/variable.js +0 -206
  93. package/lib/elements.js +0 -27
  94. package/lib/metaTypeNames.js +0 -26
  95. package/lib/metaTypes.js +0 -66
  96. package/lib/node/argument.js +0 -31
  97. package/lib/node/assertion/contained.js +0 -51
  98. package/lib/node/assertion/defined.js +0 -47
  99. package/lib/node/assertion/property.js +0 -36
  100. package/lib/node/assertion/signature.js +0 -32
  101. package/lib/node/assertion/subproof.js +0 -28
  102. package/lib/node/assertion/type.js +0 -32
  103. package/lib/node/assertion.js +0 -18
  104. package/lib/node/assumption/metaLevel.js +0 -27
  105. package/lib/node/assumption.js +0 -27
  106. package/lib/node/body/axiom.js +0 -23
  107. package/lib/node/body/conjecture.js +0 -23
  108. package/lib/node/body/lemma.js +0 -23
  109. package/lib/node/body/metaLemma.js +0 -23
  110. package/lib/node/body/metatheorem.js +0 -23
  111. package/lib/node/body/rule.js +0 -44
  112. package/lib/node/body/theorem.js +0 -23
  113. package/lib/node/body.js +0 -31
  114. package/lib/node/combinator.js +0 -23
  115. package/lib/node/conclusion.js +0 -27
  116. package/lib/node/constructor.js +0 -23
  117. package/lib/node/declaration/combinator.js +0 -28
  118. package/lib/node/declaration/complexType.js +0 -72
  119. package/lib/node/declaration/constructor.js +0 -47
  120. package/lib/node/declaration/metavariable.js +0 -36
  121. package/lib/node/declaration/property.js +0 -44
  122. package/lib/node/declaration/simpleType.js +0 -72
  123. package/lib/node/declaration/typePrefix.js +0 -32
  124. package/lib/node/declaration/variable.js +0 -51
  125. package/lib/node/declaration.js +0 -18
  126. package/lib/node/deduction.js +0 -27
  127. package/lib/node/derivation.js +0 -26
  128. package/lib/node/document.js +0 -18
  129. package/lib/node/equality.js +0 -33
  130. package/lib/node/equivalence.js +0 -23
  131. package/lib/node/equivalences.js +0 -18
  132. package/lib/node/error.js +0 -18
  133. package/lib/node/frame.js +0 -38
  134. package/lib/node/header/axiom.js +0 -28
  135. package/lib/node/header/conjecture.js +0 -23
  136. package/lib/node/header/lemma.js +0 -23
  137. package/lib/node/header/metaLemma.js +0 -23
  138. package/lib/node/header/metatheorem.js +0 -23
  139. package/lib/node/header/rule.js +0 -23
  140. package/lib/node/header/theorem.js +0 -23
  141. package/lib/node/header.js +0 -47
  142. package/lib/node/hypothesis.js +0 -27
  143. package/lib/node/judgement.js +0 -31
  144. package/lib/node/label.js +0 -23
  145. package/lib/node/labels.js +0 -23
  146. package/lib/node/metaArgument.js +0 -23
  147. package/lib/node/metaType.js +0 -30
  148. package/lib/node/metavariable.js +0 -39
  149. package/lib/node/parameter.js +0 -47
  150. package/lib/node/parenthesisedLabel.js +0 -23
  151. package/lib/node/parenthesisedLabels.js +0 -27
  152. package/lib/node/placeholder.js +0 -18
  153. package/lib/node/procedureCall.js +0 -31
  154. package/lib/node/procedureReference.js +0 -30
  155. package/lib/node/proof.js +0 -23
  156. package/lib/node/proofAssertion/premise.js +0 -28
  157. package/lib/node/proofAssertion/step.js +0 -52
  158. package/lib/node/proofAssertion/supposition.js +0 -28
  159. package/lib/node/proofAssertion.js +0 -27
  160. package/lib/node/property.js +0 -30
  161. package/lib/node/propertyRelation.js +0 -31
  162. package/lib/node/qualification.js +0 -27
  163. package/lib/node/reference.js +0 -23
  164. package/lib/node/rule.js +0 -43
  165. package/lib/node/section.js +0 -39
  166. package/lib/node/signature.js +0 -23
  167. package/lib/node/statement.js +0 -103
  168. package/lib/node/subDerivation.js +0 -26
  169. package/lib/node/subproof.js +0 -35
  170. package/lib/node/substitution/frame.js +0 -40
  171. package/lib/node/substitution/reference.js +0 -40
  172. package/lib/node/substitution/statement.js +0 -60
  173. package/lib/node/substitution/term.js +0 -40
  174. package/lib/node/substitution.js +0 -18
  175. package/lib/node/term.js +0 -60
  176. package/lib/node/topLevelAssertion/axiom.js +0 -26
  177. package/lib/node/topLevelAssertion/conjecture.js +0 -26
  178. package/lib/node/topLevelAssertion/lemma.js +0 -26
  179. package/lib/node/topLevelAssertion/theorem.js +0 -26
  180. package/lib/node/topLevelAssertion.js +0 -46
  181. package/lib/node/topLevelMetaAssertion/metaLemma.js +0 -26
  182. package/lib/node/topLevelMetaAssertion/metatheorem.js +0 -26
  183. package/lib/node/topLevelMetaAssertion.js +0 -42
  184. package/lib/node/type.js +0 -60
  185. package/lib/node/typePrefix.js +0 -30
  186. package/lib/node/types.js +0 -23
  187. package/lib/node/variable.js +0 -30
  188. package/lib/nominal/lexer.js +0 -15
  189. package/lib/nominal/parser.js +0 -24
  190. package/lib/nonTerminalNodeMap.js +0 -189
  191. package/lib/pass/zip.js +0 -23
  192. package/lib/preamble.js +0 -73
  193. package/lib/process/assign.js +0 -62
  194. package/lib/process/discharge.js +0 -38
  195. package/lib/process/equate.js +0 -73
  196. package/lib/process/instantiate.js +0 -261
  197. package/lib/process/unification.js +0 -228
  198. package/lib/process/unify.js +0 -336
  199. package/lib/process/validate.js +0 -135
  200. package/lib/process/validation.js +0 -291
  201. package/lib/process/verify.js +0 -205
  202. package/lib/ruleNames.js +0 -350
  203. package/lib/tokenTypes.js +0 -22
  204. package/lib/utilities/assignment.js +0 -47
  205. package/lib/utilities/bnf.js +0 -21
  206. package/lib/utilities/brackets.js +0 -77
  207. package/lib/utilities/breakPoint.js +0 -38
  208. package/lib/utilities/context.js +0 -220
  209. package/lib/utilities/element.js +0 -1851
  210. package/lib/utilities/equivalence.js +0 -27
  211. package/lib/utilities/equivalences.js +0 -134
  212. package/lib/utilities/instance.js +0 -44
  213. package/lib/utilities/json.js +0 -1109
  214. package/lib/utilities/string.js +0 -231
  215. package/lib/utilities/substitutions.js +0 -86
  216. package/lib/utilities/synoptic.js +0 -159
  217. package/lib/utilities/type.js +0 -27
  218. package/src/context/aphasic.js +0 -15
  219. package/src/context/bounded.js +0 -362
  220. package/src/context/branching.js +0 -69
  221. package/src/context/file/nominal.js +0 -955
  222. package/src/context/illative.js +0 -17
  223. package/src/context/liminal.js +0 -280
  224. package/src/context/literal.js +0 -42
  225. package/src/context/mnemic.js +0 -778
  226. package/src/context/nested.js +0 -21
  227. package/src/context/nominal.js +0 -62
  228. package/src/context/phaneric.js +0 -43
  229. package/src/context/thetic.js +0 -17
  230. package/src/context.js +0 -722
  231. package/src/element/assertion/contained.js +0 -313
  232. package/src/element/assertion/defined.js +0 -310
  233. package/src/element/assertion/property.js +0 -252
  234. package/src/element/assertion/signature.js +0 -239
  235. package/src/element/assertion/subproof.js +0 -335
  236. package/src/element/assertion/type.js +0 -328
  237. package/src/element/assertion.js +0 -65
  238. package/src/element/assumption/metaLevel.js +0 -373
  239. package/src/element/assumption.js +0 -374
  240. package/src/element/combinator/bracketed.js +0 -32
  241. package/src/element/combinator.js +0 -145
  242. package/src/element/conclusion.js +0 -185
  243. package/src/element/constructor/bracketed.js +0 -68
  244. package/src/element/constructor.js +0 -188
  245. package/src/element/declaration/combinator.js +0 -66
  246. package/src/element/declaration/complexType.js +0 -257
  247. package/src/element/declaration/constructor.js +0 -122
  248. package/src/element/declaration/metavariable.js +0 -93
  249. package/src/element/declaration/property.js +0 -108
  250. package/src/element/declaration/simpleType.js +0 -208
  251. package/src/element/declaration/typePrefix.js +0 -58
  252. package/src/element/declaration/variable.js +0 -130
  253. package/src/element/declaration.js +0 -7
  254. package/src/element/deduction.js +0 -185
  255. package/src/element/derivation.js +0 -57
  256. package/src/element/equality.js +0 -325
  257. package/src/element/equivalence.js +0 -276
  258. package/src/element/error.js +0 -26
  259. package/src/element/frame.js +0 -356
  260. package/src/element/hypothesis.js +0 -186
  261. package/src/element/judgement.js +0 -303
  262. package/src/element/label.js +0 -186
  263. package/src/element/metaType.js +0 -75
  264. package/src/element/metavariable.js +0 -662
  265. package/src/element/parameter.js +0 -90
  266. package/src/element/procedureCall.js +0 -159
  267. package/src/element/procedureReference.js +0 -71
  268. package/src/element/proof.js +0 -61
  269. package/src/element/proofAssertion/premise.js +0 -354
  270. package/src/element/proofAssertion/step.js +0 -271
  271. package/src/element/proofAssertion/supposition.js +0 -377
  272. package/src/element/proofAssertion.js +0 -74
  273. package/src/element/property.js +0 -258
  274. package/src/element/propertyRelation.js +0 -193
  275. package/src/element/reference.js +0 -345
  276. package/src/element/rule.js +0 -358
  277. package/src/element/section.js +0 -78
  278. package/src/element/signature.js +0 -292
  279. package/src/element/statement.js +0 -358
  280. package/src/element/subDerivation.js +0 -56
  281. package/src/element/subproof.js +0 -116
  282. package/src/element/substitution/frame.js +0 -392
  283. package/src/element/substitution/reference.js +0 -274
  284. package/src/element/substitution/statement.js +0 -452
  285. package/src/element/substitution/term.js +0 -407
  286. package/src/element/substitution.js +0 -261
  287. package/src/element/term.js +0 -339
  288. package/src/element/topLevelAssertion/axiom.js +0 -244
  289. package/src/element/topLevelAssertion/conjecture.js +0 -40
  290. package/src/element/topLevelAssertion/lemma.js +0 -42
  291. package/src/element/topLevelAssertion/theorem.js +0 -40
  292. package/src/element/topLevelAssertion.js +0 -436
  293. package/src/element/topLevelMetaAssertion/metaLemma.js +0 -40
  294. package/src/element/topLevelMetaAssertion/metatheorem.js +0 -40
  295. package/src/element/topLevelMetaAssertion.js +0 -276
  296. package/src/element/type.js +0 -374
  297. package/src/element/typePrefix.js +0 -113
  298. package/src/element/variable.js +0 -259
  299. package/src/elements.js +0 -13
  300. package/src/metaTypeNames.js +0 -5
  301. package/src/metaTypes.js +0 -71
  302. package/src/node/argument.js +0 -30
  303. package/src/node/assertion/contained.js +0 -53
  304. package/src/node/assertion/defined.js +0 -46
  305. package/src/node/assertion/property.js +0 -30
  306. package/src/node/assertion/signature.js +0 -23
  307. package/src/node/assertion/subproof.js +0 -16
  308. package/src/node/assertion/type.js +0 -23
  309. package/src/node/assertion.js +0 -7
  310. package/src/node/assumption/metaLevel.js +0 -23
  311. package/src/node/assumption.js +0 -23
  312. package/src/node/body/axiom.js +0 -7
  313. package/src/node/body/conjecture.js +0 -7
  314. package/src/node/body/lemma.js +0 -7
  315. package/src/node/body/metaLemma.js +0 -7
  316. package/src/node/body/metatheorem.js +0 -7
  317. package/src/node/body/rule.js +0 -42
  318. package/src/node/body/theorem.js +0 -7
  319. package/src/node/body.js +0 -30
  320. package/src/node/combinator.js +0 -16
  321. package/src/node/conclusion.js +0 -23
  322. package/src/node/constructor.js +0 -16
  323. package/src/node/declaration/combinator.js +0 -16
  324. package/src/node/declaration/complexType.js +0 -88
  325. package/src/node/declaration/constructor.js +0 -46
  326. package/src/node/declaration/metavariable.js +0 -30
  327. package/src/node/declaration/property.js +0 -42
  328. package/src/node/declaration/simpleType.js +0 -87
  329. package/src/node/declaration/typePrefix.js +0 -24
  330. package/src/node/declaration/variable.js +0 -53
  331. package/src/node/declaration.js +0 -7
  332. package/src/node/deduction.js +0 -23
  333. package/src/node/derivation.js +0 -19
  334. package/src/node/document.js +0 -7
  335. package/src/node/equality.js +0 -35
  336. package/src/node/equivalence.js +0 -16
  337. package/src/node/equivalences.js +0 -7
  338. package/src/node/error.js +0 -7
  339. package/src/node/frame.js +0 -40
  340. package/src/node/header/axiom.js +0 -16
  341. package/src/node/header/conjecture.js +0 -7
  342. package/src/node/header/lemma.js +0 -7
  343. package/src/node/header/metaLemma.js +0 -7
  344. package/src/node/header/metatheorem.js +0 -7
  345. package/src/node/header/rule.js +0 -7
  346. package/src/node/header/theorem.js +0 -7
  347. package/src/node/header.js +0 -54
  348. package/src/node/hypothesis.js +0 -23
  349. package/src/node/judgement.js +0 -30
  350. package/src/node/label.js +0 -16
  351. package/src/node/labels.js +0 -16
  352. package/src/node/metaArgument.js +0 -16
  353. package/src/node/metaType.js +0 -26
  354. package/src/node/metavariable.js +0 -42
  355. package/src/node/parameter.js +0 -51
  356. package/src/node/parenthesisedLabel.js +0 -16
  357. package/src/node/parenthesisedLabels.js +0 -23
  358. package/src/node/placeholder.js +0 -7
  359. package/src/node/procedureCall.js +0 -30
  360. package/src/node/procedureReference.js +0 -26
  361. package/src/node/proof.js +0 -16
  362. package/src/node/proofAssertion/premise.js +0 -16
  363. package/src/node/proofAssertion/step.js +0 -52
  364. package/src/node/proofAssertion/supposition.js +0 -16
  365. package/src/node/proofAssertion.js +0 -23
  366. package/src/node/property.js +0 -28
  367. package/src/node/propertyRelation.js +0 -30
  368. package/src/node/qualification.js +0 -23
  369. package/src/node/reference.js +0 -16
  370. package/src/node/rule.js +0 -51
  371. package/src/node/section.js +0 -44
  372. package/src/node/signature.js +0 -16
  373. package/src/node/statement.js +0 -167
  374. package/src/node/subDerivation.js +0 -19
  375. package/src/node/subproof.js +0 -35
  376. package/src/node/substitution/frame.js +0 -37
  377. package/src/node/substitution/reference.js +0 -38
  378. package/src/node/substitution/statement.js +0 -70
  379. package/src/node/substitution/term.js +0 -38
  380. package/src/node/substitution.js +0 -7
  381. package/src/node/term.js +0 -75
  382. package/src/node/topLevelAssertion/axiom.js +0 -13
  383. package/src/node/topLevelAssertion/conjecture.js +0 -13
  384. package/src/node/topLevelAssertion/lemma.js +0 -13
  385. package/src/node/topLevelAssertion/theorem.js +0 -13
  386. package/src/node/topLevelAssertion.js +0 -58
  387. package/src/node/topLevelMetaAssertion/metaLemma.js +0 -13
  388. package/src/node/topLevelMetaAssertion/metatheorem.js +0 -13
  389. package/src/node/topLevelMetaAssertion.js +0 -51
  390. package/src/node/type.js +0 -74
  391. package/src/node/typePrefix.js +0 -26
  392. package/src/node/types.js +0 -16
  393. package/src/node/variable.js +0 -26
  394. package/src/nominal/lexer.js +0 -5
  395. package/src/nominal/parser.js +0 -12
  396. package/src/nonTerminalNodeMap.js +0 -261
  397. package/src/pass/zip.js +0 -19
  398. package/src/preamble.js +0 -64
  399. package/src/process/assign.js +0 -53
  400. package/src/process/discharge.js +0 -33
  401. package/src/process/equate.js +0 -94
  402. package/src/process/instantiate.js +0 -198
  403. package/src/process/unification.js +0 -332
  404. package/src/process/unify.js +0 -504
  405. package/src/process/validate.js +0 -174
  406. package/src/process/validation.js +0 -410
  407. package/src/process/verify.js +0 -299
  408. package/src/ruleNames.js +0 -86
  409. package/src/tokenTypes.js +0 -4
  410. package/src/utilities/assignment.js +0 -57
  411. package/src/utilities/bnf.js +0 -20
  412. package/src/utilities/brackets.js +0 -87
  413. package/src/utilities/breakPoint.js +0 -29
  414. package/src/utilities/context.js +0 -223
  415. package/src/utilities/element.js +0 -2293
  416. package/src/utilities/equivalence.js +0 -25
  417. package/src/utilities/equivalences.js +0 -158
  418. package/src/utilities/instance.js +0 -40
  419. package/src/utilities/json.js +0 -1273
  420. package/src/utilities/string.js +0 -282
  421. package/src/utilities/substitutions.js +0 -93
  422. package/src/utilities/synoptic.js +0 -135
  423. package/src/utilities/type.js +0 -19
@@ -1,235 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- const _necessary = require("necessary");
12
- const _occamlanguages = require("occam-languages");
13
- const _elements = /*#__PURE__*/ _interop_require_wildcard(require("../../elements"));
14
- const _proofAssertion = /*#__PURE__*/ _interop_require_default(require("../proofAssertion"));
15
- const _unification = require("../../process/unification");
16
- const _context = require("../../utilities/context");
17
- function _interop_require_default(obj) {
18
- return obj && obj.__esModule ? obj : {
19
- default: obj
20
- };
21
- }
22
- function _getRequireWildcardCache(nodeInterop) {
23
- if (typeof WeakMap !== "function") return null;
24
- var cacheBabelInterop = new WeakMap();
25
- var cacheNodeInterop = new WeakMap();
26
- return (_getRequireWildcardCache = function(nodeInterop) {
27
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
28
- })(nodeInterop);
29
- }
30
- function _interop_require_wildcard(obj, nodeInterop) {
31
- if (!nodeInterop && obj && obj.__esModule) {
32
- return obj;
33
- }
34
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
35
- return {
36
- default: obj
37
- };
38
- }
39
- var cache = _getRequireWildcardCache(nodeInterop);
40
- if (cache && cache.has(obj)) {
41
- return cache.get(obj);
42
- }
43
- var newObj = {
44
- __proto__: null
45
- };
46
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
47
- for(var key in obj){
48
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
49
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
50
- if (desc && (desc.get || desc.set)) {
51
- Object.defineProperty(newObj, key, desc);
52
- } else {
53
- newObj[key] = obj[key];
54
- }
55
- }
56
- }
57
- newObj.default = obj;
58
- if (cache) {
59
- cache.set(obj, newObj);
60
- }
61
- return newObj;
62
- }
63
- const { asyncSome } = _occamlanguages.asynchronousUtilities, { backwardsSome } = _necessary.arrayUtilities;
64
- const _default = (0, _elements.define)(class Step extends _proofAssertion.default {
65
- constructor(context, string, node, breakPoint, statement, reference, signatureAssertion){
66
- super(context, string, node, breakPoint, statement);
67
- this.reference = reference;
68
- this.signatureAssertion = signatureAssertion;
69
- }
70
- getReference() {
71
- return this.reference;
72
- }
73
- getSignatureAssertion() {
74
- return this.signatureAssertion;
75
- }
76
- getStepNode() {
77
- const node = this.getNode(), stepNode = node; ///
78
- return stepNode;
79
- }
80
- getStatementNode() {
81
- const statement = this.getStatement(), statementNode = statement.getNode();
82
- return statementNode;
83
- }
84
- isQualified() {
85
- const qualified = this.reference !== null || this.signatureAssertion !== null;
86
- return qualified;
87
- }
88
- isUnqualified() {
89
- const qualified = this.isQualified(), unqualified = !qualified;
90
- return unqualified;
91
- }
92
- compareTermAndPropertyRelation(term, propertyRelation, context) {
93
- let comparesToTermAndPropertyRelation = false;
94
- const { PropertyAssertion } = _elements.default, statement = this.getStatement(), propertyAssertion = PropertyAssertion.fromStatement(statement, context);
95
- if (propertyAssertion !== null) {
96
- comparesToTermAndPropertyRelation = propertyAssertion.compareTermAndPropertyRelation(term, propertyRelation, context);
97
- }
98
- return comparesToTermAndPropertyRelation;
99
- }
100
- compareSubproofOrProofAssertions(subproofOrProofAssertions, context) {
101
- let comparesToSubproofOrProofAssertions;
102
- const step = this; ///
103
- comparesToSubproofOrProofAssertions = backwardsSome(subproofOrProofAssertions, (subproofOrProofAssertion)=>{
104
- const subproofOrProofAssertionComparesToStatement = subproofOrProofAssertion.compareStep(step, context);
105
- if (subproofOrProofAssertionComparesToStatement) {
106
- return true;
107
- }
108
- });
109
- return comparesToSubproofOrProofAssertions;
110
- }
111
- async verify(context) {
112
- let verifies = false;
113
- await this.break(context);
114
- const stepString = this.getString(); ///
115
- context.trace(`Verifying the '${stepString}' step...`);
116
- const statement = this.getStatement();
117
- if (statement !== null) {
118
- const qualified = this.isQualified(), stated = qualified; ///
119
- await (stated ? _context.declare : _context.derive)(async (context)=>{
120
- const validates = this.validate(context);
121
- if (validates) {
122
- context = this.getContext();
123
- const unifiies = await this.unify(context);
124
- if (unifiies) {
125
- verifies = true;
126
- }
127
- }
128
- }, context);
129
- } else {
130
- context.debug(`Unable to verify the '${stepString}' step because it is nonsense.`);
131
- }
132
- if (verifies) {
133
- context.debug(`...verified the '${stepString}' step.`);
134
- }
135
- return verifies;
136
- }
137
- validate(context) {
138
- let validates = false;
139
- const stepString = this.getString(); ///
140
- context.trace(`Validating the '${stepString}' step...`);
141
- (0, _context.attempt)((context)=>{
142
- const statementValidates = this.validateStatement(context);
143
- if (statementValidates) {
144
- const referenceValidates = this.validateReference(context);
145
- if (referenceValidates) {
146
- const signatureAssertionValidates = this.validateSignatureAssertion(context);
147
- if (signatureAssertionValidates) {
148
- validates = true;
149
- }
150
- }
151
- }
152
- if (validates) {
153
- this.commit(context);
154
- }
155
- }, context);
156
- if (validates) {
157
- context.debug(`...validated the '${stepString}' step.`);
158
- }
159
- return validates;
160
- }
161
- validateStatement(context) {
162
- let statementValidates = false;
163
- const stepString = this.getString();
164
- context.trace(`Validating the '${stepString}' step's statement... `);
165
- let statement;
166
- statement = this.getStatement();
167
- statement = statement.validate(context); ///
168
- if (statement !== null) {
169
- statementValidates = true;
170
- }
171
- if (statementValidates) {
172
- context.debug(`...validated the '${stepString}' step's statement. `);
173
- }
174
- return statementValidates;
175
- }
176
- validateReference(context) {
177
- let referenceValidates = false;
178
- if (this.reference !== null) {
179
- const stepString = this.getString(), referenceString = this.reference.getString();
180
- context.trace(`Validating the '${stepString}' step's '${referenceString}' reference... `);
181
- const reference = this.reference.validate(context);
182
- if (reference !== null) {
183
- this.reference = reference;
184
- referenceValidates = true;
185
- }
186
- if (referenceValidates) {
187
- context.debug(`...validated the '${stepString}' step's '${referenceString}' reference. `);
188
- }
189
- } else {
190
- referenceValidates = true;
191
- }
192
- return referenceValidates;
193
- }
194
- validateSignatureAssertion(context) {
195
- let signatureAssertionValidates = false;
196
- if (this.signatureAssertion !== null) {
197
- const stepString = this.getString(), signatureAssertionString = this.signatureAssertion.getString();
198
- context.trace(`Validating the '${stepString}' step's '${signatureAssertionString}' signature assertion... `);
199
- const signatureAssertion = this.signatureAssertion.validate(context);
200
- if (signatureAssertion !== null) {
201
- this.signatureAssertion = signatureAssertion;
202
- signatureAssertionValidates = true;
203
- }
204
- if (signatureAssertionValidates) {
205
- context.debug(`...validated the '${stepString}' step's '${signatureAssertionString}' signature assertion. `);
206
- }
207
- } else {
208
- signatureAssertionValidates = true;
209
- }
210
- return signatureAssertionValidates;
211
- }
212
- async unify(context) {
213
- let unifies = false;
214
- const stepString = this.getString(); ///
215
- context.trace(`Unifying the '${stepString}' step...`);
216
- const step = this; ///
217
- await asyncSome(_unification.unifySteps, async (unifyStep)=>{
218
- let stepUnifies;
219
- await (0, _context.reconcile)(async (context)=>{
220
- stepUnifies = await unifyStep(step, context);
221
- }, context);
222
- if (stepUnifies) {
223
- unifies = true;
224
- return true;
225
- }
226
- });
227
- if (unifies) {
228
- context.debug(`...unified the '${stepString}' step.`);
229
- }
230
- return unifies;
231
- }
232
- static name = "Step";
233
- });
234
-
235
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3Byb29mQXNzZXJ0aW9uL3N0ZXAuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgYXN5bmNocm9ub3VzVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgZWxlbWVudHMgZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgUHJvb2ZBc3NlcnRpb24gZnJvbSBcIi4uL3Byb29mQXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgdW5pZnlTdGVwcyB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL3VuaWZpY2F0aW9uXCI7XG5pbXBvcnQgeyBkZXJpdmUsIGRlY2xhcmUsIGF0dGVtcHQsIHJlY29uY2lsZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGFzeW5jU29tZSB9ID0gYXN5bmNocm9ub3VzVXRpbGl0aWVzLFxuICAgICAgeyBiYWNrd2FyZHNTb21lIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFN0ZXAgZXh0ZW5kcyBQcm9vZkFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50LCByZWZlcmVuY2UsIHNpZ25hdHVyZUFzc2VydGlvbikge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KTtcblxuICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICAgIHRoaXMuc2lnbmF0dXJlQXNzZXJ0aW9uID0gc2lnbmF0dXJlQXNzZXJ0aW9uO1xuICB9XG5cbiAgZ2V0UmVmZXJlbmNlKCkge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZTtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZUFzc2VydGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBnZXRTdGVwTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc3RlcE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gc3RlcE5vZGU7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnROb2RlKCkge1xuICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50Tm9kZTtcbiAgfVxuXG4gIGlzUXVhbGlmaWVkKCkge1xuICAgIGNvbnN0IHF1YWxpZmllZCA9ICgodGhpcy5yZWZlcmVuY2UgIT09IG51bGwpIHx8ICh0aGlzLnNpZ25hdHVyZUFzc2VydGlvbiAhPT0gbnVsbCkpO1xuXG4gICAgcmV0dXJuIHF1YWxpZmllZDtcbiAgfVxuXG4gIGlzVW5xdWFsaWZpZWQoKSB7XG4gICAgY29uc3QgcXVhbGlmaWVkID0gdGhpcy5pc1F1YWxpZmllZCgpLFxuICAgICAgICAgIHVucXVhbGlmaWVkID0gIXF1YWxpZmllZDtcblxuICAgIHJldHVybiB1bnF1YWxpZmllZDtcbiAgfVxuXG4gIGNvbXBhcmVUZXJtQW5kUHJvcGVydHlSZWxhdGlvbih0ZXJtLCBwcm9wZXJ0eVJlbGF0aW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbXBhcmVzVG9UZXJtQW5kUHJvcGVydHlSZWxhdGlvbiA9IGZhbHNlO1xuXG4gICAgY29uc3QgeyBQcm9wZXJ0eUFzc2VydGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc3RhdGVtZW50ID0gdGhpcy5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBwcm9wZXJ0eUFzc2VydGlvbiA9IFByb3BlcnR5QXNzZXJ0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgIGlmIChwcm9wZXJ0eUFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29tcGFyZXNUb1Rlcm1BbmRQcm9wZXJ0eVJlbGF0aW9uID0gcHJvcGVydHlBc3NlcnRpb24uY29tcGFyZVRlcm1BbmRQcm9wZXJ0eVJlbGF0aW9uKHRlcm0sIHByb3BlcnR5UmVsYXRpb24sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb21wYXJlc1RvVGVybUFuZFByb3BlcnR5UmVsYXRpb247XG4gIH1cblxuICBjb21wYXJlU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyhzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbXBhcmVzVG9TdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zO1xuXG4gICAgY29uc3Qgc3RlcCA9IHRoaXM7IC8vL1xuXG4gICAgY29tcGFyZXNUb1N1YnByb29mT3JQcm9vZkFzc2VydGlvbnMgPSBiYWNrd2FyZHNTb21lKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMsIChzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvbkNvbXBhcmVzVG9TdGF0ZW1lbnQgPSBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24uY29tcGFyZVN0ZXAoc3RlcCwgY29udGV4dCk7XG5cbiAgICAgIGlmIChzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25Db21wYXJlc1RvU3RhdGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9TdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5KGNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGF3YWl0IHRoaXMuYnJlYWsoY29udGV4dCk7XG5cbiAgICBjb25zdCBzdGVwU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLi4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmdldFN0YXRlbWVudCgpO1xuXG4gICAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcXVhbGlmaWVkID0gdGhpcy5pc1F1YWxpZmllZCgpLFxuICAgICAgICAgICAgc3RhdGVkID0gcXVhbGlmaWVkOyAvLy9cblxuICAgICAgYXdhaXQgKHN0YXRlZCA/IGRlY2xhcmUgOiBkZXJpdmUpKGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGUoY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgICAgICAgIGNvbnN0IHVuaWZpaWVzID0gYXdhaXQgdGhpcy51bmlmeShjb250ZXh0KTtcblxuICAgICAgICAgIGlmICh1bmlmaWllcykge1xuICAgICAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgY29udGV4dClcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYmVjYXVzZSBpdCBpcyBub25zZW5zZS5gKTtcbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZXM7XG4gIH1cblxuICB2YWxpZGF0ZShjb250ZXh0KSB7XG4gICAgbGV0IHZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RlcFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAuLi5gKTtcblxuICAgIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudFZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQoY29udGV4dCk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlVmFsaWRhdGVzID0gdGhpcy52YWxpZGF0ZVJlZmVyZW5jZShjb250ZXh0KTtcblxuICAgICAgICBpZiAocmVmZXJlbmNlVmFsaWRhdGVzKSB7XG4gICAgICAgICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uVmFsaWRhdGVzID0gdGhpcy52YWxpZGF0ZVNpZ25hdHVyZUFzc2VydGlvbihjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChzaWduYXR1cmVBc3NlcnRpb25WYWxpZGF0ZXMpIHtcbiAgICAgICAgICAgIHZhbGlkYXRlcyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG4gICAgICB9XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChjb250ZXh0KSB7XG4gICAgbGV0IHN0YXRlbWVudFZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RlcFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCdzIHN0YXRlbWVudC4uLiBgKTtcblxuICAgIGxldCBzdGF0ZW1lbnQ7XG5cbiAgICBzdGF0ZW1lbnQgPSB0aGlzLmdldFN0YXRlbWVudCgpO1xuXG4gICAgc3RhdGVtZW50ID0gc3RhdGVtZW50LnZhbGlkYXRlKGNvbnRleHQpOyAgLy8vXG5cbiAgICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAncyBzdGF0ZW1lbnQuIGApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVJlZmVyZW5jZShjb250ZXh0KSB7XG4gICAgbGV0IHJlZmVyZW5jZVZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMucmVmZXJlbmNlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGVwU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgICAgcmVmZXJlbmNlU3RyaW5nID0gdGhpcy5yZWZlcmVuY2UuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwJ3MgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLi4uIGApO1xuXG4gICAgICBjb25zdCByZWZlcmVuY2UgPSB0aGlzLnJlZmVyZW5jZS52YWxpZGF0ZShjb250ZXh0KTtcblxuICAgICAgaWYgKHJlZmVyZW5jZSAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcblxuICAgICAgICByZWZlcmVuY2VWYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVmZXJlbmNlVmFsaWRhdGVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAncyAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UuIGApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZWZlcmVuY2VWYWxpZGF0ZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiByZWZlcmVuY2VWYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVNpZ25hdHVyZUFzc2VydGlvbihjb250ZXh0KSB7XG4gICAgbGV0IHNpZ25hdHVyZUFzc2VydGlvblZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuc2lnbmF0dXJlQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGVwU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5zaWduYXR1cmVBc3NlcnRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwJ3MgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLiBgKTtcblxuICAgICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uID0gdGhpcy5zaWduYXR1cmVBc3NlcnRpb24udmFsaWRhdGUoY29udGV4dCk7XG5cbiAgICAgIGlmIChzaWduYXR1cmVBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5zaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb247XG5cbiAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uVmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNpZ25hdHVyZUFzc2VydGlvblZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwJ3MgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4gYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNpZ25hdHVyZUFzc2VydGlvblZhbGlkYXRlcyA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpZ25hdHVyZUFzc2VydGlvblZhbGlkYXRlcztcbiAgfVxuXG4gIGFzeW5jIHVuaWZ5KGNvbnRleHQpIHtcbiAgICBsZXQgdW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RlcFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLi4uYCk7XG5cbiAgICBjb25zdCBzdGVwID0gdGhpczsgIC8vL1xuXG4gICAgYXdhaXQgYXN5bmNTb21lKHVuaWZ5U3RlcHMsIGFzeW5jICh1bmlmeVN0ZXApID0+IHtcbiAgICAgIGxldCBzdGVwVW5pZmllcztcblxuICAgICAgYXdhaXQgcmVjb25jaWxlKGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgICAgIHN0ZXBVbmlmaWVzID0gYXdhaXQgdW5pZnlTdGVwKHN0ZXAsIGNvbnRleHQpO1xuICAgICAgfSwgY29udGV4dCk7XG5cbiAgICAgIGlmIChzdGVwVW5pZmllcykge1xuICAgICAgICB1bmlmaWVzID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh1bmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5pZmllcztcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTdGVwXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJhc3luY1NvbWUiLCJhc3luY2hyb25vdXNVdGlsaXRpZXMiLCJiYWNrd2FyZHNTb21lIiwiYXJyYXlVdGlsaXRpZXMiLCJkZWZpbmUiLCJTdGVwIiwiUHJvb2ZBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJzdGF0ZW1lbnQiLCJyZWZlcmVuY2UiLCJzaWduYXR1cmVBc3NlcnRpb24iLCJnZXRSZWZlcmVuY2UiLCJnZXRTaWduYXR1cmVBc3NlcnRpb24iLCJnZXRTdGVwTm9kZSIsImdldE5vZGUiLCJzdGVwTm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJnZXRTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwiaXNRdWFsaWZpZWQiLCJxdWFsaWZpZWQiLCJpc1VucXVhbGlmaWVkIiwidW5xdWFsaWZpZWQiLCJjb21wYXJlVGVybUFuZFByb3BlcnR5UmVsYXRpb24iLCJ0ZXJtIiwicHJvcGVydHlSZWxhdGlvbiIsImNvbXBhcmVzVG9UZXJtQW5kUHJvcGVydHlSZWxhdGlvbiIsIlByb3BlcnR5QXNzZXJ0aW9uIiwiZWxlbWVudHMiLCJwcm9wZXJ0eUFzc2VydGlvbiIsImZyb21TdGF0ZW1lbnQiLCJjb21wYXJlU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsInN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMiLCJjb21wYXJlc1RvU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsInN0ZXAiLCJzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25Db21wYXJlc1RvU3RhdGVtZW50IiwiY29tcGFyZVN0ZXAiLCJ2ZXJpZnkiLCJ2ZXJpZmllcyIsImJyZWFrIiwic3RlcFN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwic3RhdGVkIiwiZGVjbGFyZSIsImRlcml2ZSIsInZhbGlkYXRlcyIsInZhbGlkYXRlIiwiZ2V0Q29udGV4dCIsInVuaWZpaWVzIiwidW5pZnkiLCJkZWJ1ZyIsImF0dGVtcHQiLCJzdGF0ZW1lbnRWYWxpZGF0ZXMiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsInJlZmVyZW5jZVZhbGlkYXRlcyIsInZhbGlkYXRlUmVmZXJlbmNlIiwic2lnbmF0dXJlQXNzZXJ0aW9uVmFsaWRhdGVzIiwidmFsaWRhdGVTaWduYXR1cmVBc3NlcnRpb24iLCJjb21taXQiLCJyZWZlcmVuY2VTdHJpbmciLCJzaWduYXR1cmVBc3NlcnRpb25TdHJpbmciLCJ1bmlmaWVzIiwidW5pZnlTdGVwcyIsInVuaWZ5U3RlcCIsInN0ZXBVbmlmaWVzIiwicmVjb25jaWxlIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZUE7OztlQUFBOzs7MkJBYitCO2dDQUNPO2tFQUVqQjt1RUFDTTs2QkFHQTt5QkFDeUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXBELE1BQU0sRUFBRUEsU0FBUyxFQUFFLEdBQUdDLHFDQUFxQixFQUNyQyxFQUFFQyxhQUFhLEVBQUUsR0FBR0MseUJBQWM7TUFFeEMsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxhQUFhQyx1QkFBYztJQUNyRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsRUFBRUMsU0FBUyxFQUFFQyxrQkFBa0IsQ0FBRTtRQUN2RixLQUFLLENBQUNOLFNBQVNDLFFBQVFDLE1BQU1DLFlBQVlDO1FBRXpDLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtRQUNqQixJQUFJLENBQUNDLGtCQUFrQixHQUFHQTtJQUM1QjtJQUVBQyxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUNGLFNBQVM7SUFDdkI7SUFFQUcsd0JBQXdCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDRixrQkFBa0I7SUFDaEM7SUFFQUcsY0FBYztRQUNaLE1BQU1QLE9BQU8sSUFBSSxDQUFDUSxPQUFPLElBQ25CQyxXQUFXVCxNQUFPLEdBQUc7UUFFM0IsT0FBT1M7SUFDVDtJQUVBQyxtQkFBbUI7UUFDakIsTUFBTVIsWUFBWSxJ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
@@ -1,249 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- const _proofAssertion = /*#__PURE__*/ _interop_require_default(require("../proofAssertion"));
12
- const _elements = require("../../elements");
13
- const _instantiate = require("../../process/instantiate");
14
- const _element = require("../../utilities/element");
15
- const _breakPoint = require("../../utilities/breakPoint");
16
- const _context = require("../../utilities/context");
17
- function _interop_require_default(obj) {
18
- return obj && obj.__esModule ? obj : {
19
- default: obj
20
- };
21
- }
22
- const _default = (0, _elements.define)(class Supposition extends _proofAssertion.default {
23
- constructor(context, string, node, breakPoint, statement, procedureCall){
24
- super(context, string, node, breakPoint, statement);
25
- this.procedureCall = procedureCall;
26
- }
27
- getProcedureCall() {
28
- return this.procedureCall;
29
- }
30
- getSuppositionNode() {
31
- const node = this.getNode(), suppositionNode = node; ///
32
- return suppositionNode;
33
- }
34
- getStatementNode() {
35
- const suppositionNode = this.getSuppositionNode(), statementNode = suppositionNode.getStatementNode();
36
- return statementNode;
37
- }
38
- findSubproofAssertion() {
39
- let subproofAssertion = null;
40
- const statementNode = this.getStatementNode();
41
- if (statementNode !== null) {
42
- const subproofAssertionNode = statementNode.getSubproofAssertionNode();
43
- if (subproofAssertionNode !== null) {
44
- const context = this.getContext();
45
- subproofAssertion = context.findAssertionByAssertionNode(subproofAssertionNode);
46
- }
47
- }
48
- return subproofAssertion;
49
- }
50
- async verify(context) {
51
- let verifies = false;
52
- await this.break(context);
53
- const suppositionString = this.getString();
54
- context.trace(`Verifying the '${suppositionString}' supposition...`);
55
- const statement = this.getStatement(), procedureCall = this.getProcedureCall();
56
- if (statement !== null || procedureCall !== null) {
57
- (0, _context.declare)((context)=>{
58
- const validates = this.validate(context);
59
- if (validates) {
60
- verifies = true;
61
- }
62
- }, context);
63
- } else {
64
- context.debug(`Unable to validate the '${suppositionString}' supposition because it is nonsense.`);
65
- }
66
- return verifies;
67
- }
68
- validate(context) {
69
- let validates = false;
70
- const suppositionString = this.getString(); ///
71
- context.trace(`Validatting the '${suppositionString}' supposition...`);
72
- (0, _context.attempt)((context)=>{
73
- const statement = this.getStatement(), procedureCall = this.getProcedureCall();
74
- if (statement !== null) {
75
- const statementValidates = this.validateStatement(context);
76
- if (statementValidates) {
77
- validates = true;
78
- }
79
- }
80
- if (procedureCall !== null) {
81
- const procedureCallValidates = this.validateProcedureCall(context);
82
- if (procedureCallValidates) {
83
- validates = true;
84
- }
85
- }
86
- if (validates) {
87
- this.commit(context);
88
- }
89
- }, context);
90
- if (validates) {
91
- context.debug(`...validated the '${suppositionString}' supposition.`);
92
- }
93
- return validates;
94
- }
95
- validateStatement(context) {
96
- let statementValidates = false;
97
- const suppositionString = this.getString();
98
- context.trace(`Validating the '${suppositionString}' supposition's statement... `);
99
- let statement;
100
- statement = this.getStatement();
101
- statement = statement.validate(context); ///
102
- if (statement !== null) {
103
- statementValidates = true;
104
- }
105
- if (statementValidates) {
106
- context.debug(`...validated the '${suppositionString}' supposition statement. `);
107
- }
108
- return statementValidates;
109
- }
110
- validateProcedureCall(context) {
111
- let procedureCallValidates = false;
112
- const suppositionString = this.getString(), procedureCallString = this.procedureCall.getString();
113
- context.trace(`Validatting the '${suppositionString}' supposition's '${procedureCallString}' procedure call...`);
114
- const procedureCall = this.procedureCall.validate(context);
115
- if (procedureCall !== null) {
116
- procedureCallValidates = true;
117
- }
118
- if (procedureCallValidates) {
119
- context.debug(`...validated the '${suppositionString}' supposition's '${procedureCallString}' procedure call.`);
120
- }
121
- return procedureCallValidates;
122
- }
123
- unifySupposition(supposition, generalContext, specificContext) {
124
- let suppositionUnifies;
125
- const context = specificContext, specificSupposition = supposition, generalSuppositionString = this.getString(), specificSuppositionString = specificSupposition.getString();
126
- context.trace(`Unifying the '${specificSuppositionString}' supposition with the '${generalSuppositionString}' supposition...`);
127
- const statement = specificSupposition.getStatement(), statementUnifies = this.unifyStatement(statement, generalContext, specificContext);
128
- suppositionUnifies = statementUnifies; ///
129
- if (suppositionUnifies) {
130
- context.debug(`...unified the '${specificSuppositionString}' supposition with the '${generalSuppositionString}' supposition.`);
131
- }
132
- return suppositionUnifies;
133
- }
134
- async unifyIndependently(context) {
135
- let unifiesIndependently = false;
136
- const suppositionString = this.getString(); ///
137
- context.trace(`Unifying the '${suppositionString}' supposition independently...`);
138
- await (0, _context.reconcile)(async (context)=>{
139
- const statement = this.getStatement(), procedureCall = this.getProcedureCall();
140
- if (statement !== null) {
141
- const suppositionContext = this.getContext(), generalContext = suppositionContext, specificContext = context, statementUnifiesIndependently = statement.unifyIndependently(generalContext, specificContext);
142
- if (statementUnifiesIndependently) {
143
- unifiesIndependently = true;
144
- }
145
- }
146
- if (procedureCall !== null) {
147
- const procedureCallResolvedIndependently = await procedureCall.unifyIndependently(context);
148
- if (procedureCallResolvedIndependently) {
149
- unifiesIndependently = true;
150
- }
151
- }
152
- }, context);
153
- if (unifiesIndependently) {
154
- context.debug(`...unified the '${suppositionString}' supposition independently.`);
155
- }
156
- return unifiesIndependently;
157
- }
158
- unifySubproof(subproof, context) {
159
- let subproofUnifies = false;
160
- const suppositionString = this.getString(), subproofString = subproof.getString();
161
- context.trace(`Unifying the '${subproofString}' subproof with the '${suppositionString}' supposition...`);
162
- const subproofAssertion = this.findSubproofAssertion();
163
- if (subproofAssertion !== null) {
164
- const suppositionContext = this.getContext(), generalContext = suppositionContext, spsecfiicContext = context; ///
165
- subproofUnifies = subproofAssertion.unifySubproof(subproof, generalContext, spsecfiicContext);
166
- }
167
- if (subproofUnifies) {
168
- context.debug(`...unified the '${subproofString}' subproof with the '${suppositionString}' supposition.`);
169
- }
170
- return subproofUnifies;
171
- }
172
- unifyProofAssertion(proofAssertion, context) {
173
- let proofAssertionUnifies = false;
174
- const suppositionString = this.getString(), proofAssertionString = proofAssertion.getString();
175
- context.trace(`Unifying the '${proofAssertionString}' proof assertion with the '${suppositionString}' supposition...`);
176
- const proofAssertionContext = proofAssertion.getContext(), suppositionContext = this.getContext(), generalContext = suppositionContext, specificContext = proofAssertionContext; ///
177
- (0, _context.reconcile)((specificContext)=>{
178
- const statement = proofAssertion.getStatement(), statementUnifies = this.unifyStatement(statement, generalContext, specificContext);
179
- if (statementUnifies) {
180
- specificContext.commit(context);
181
- proofAssertionUnifies = true;
182
- }
183
- }, specificContext);
184
- if (proofAssertionUnifies) {
185
- context.debug(`...unified the '${proofAssertionString}' proof assertion with the '${suppositionString}' supposition.`);
186
- }
187
- return proofAssertionUnifies;
188
- }
189
- unifySubproofOrProofAssertion(subproofOrProofAssertion, context) {
190
- let subproofOrProofAssertionUnifies;
191
- const suppositionString = this.getString(), subproofOrProofAssertionString = subproofOrProofAssertion.getString();
192
- context.trace(`Unifying the '${subproofOrProofAssertionString}' subproof or proof assertion with the '${suppositionString}' supposition...`);
193
- const subproofOrProofAssertionProofAssertion = subproofOrProofAssertion.isProofAssertion(), proofAssertion = subproofOrProofAssertionProofAssertion ? subproofOrProofAssertion : null, subproof = subproofOrProofAssertionProofAssertion ? null : subproofOrProofAssertion;
194
- (0, _context.reconcile)((context)=>{
195
- if (proofAssertion !== null) {
196
- const proofAssertionUnifies = this.unifyProofAssertion(proofAssertion, context);
197
- if (proofAssertionUnifies) {
198
- subproofOrProofAssertionUnifies = true;
199
- }
200
- }
201
- if (subproof !== null) {
202
- const subproofUnifies = this.unifySubproof(subproof, context);
203
- if (subproofUnifies) {
204
- subproofOrProofAssertionUnifies = true;
205
- }
206
- }
207
- if (subproofOrProofAssertionUnifies) {
208
- context.commit();
209
- }
210
- }, context);
211
- if (subproofOrProofAssertionUnifies) {
212
- context.debug(`...unified the '${subproofOrProofAssertionString}' subproof or proof assertion with the '${suppositionString}' supposition.`);
213
- }
214
- return subproofOrProofAssertionUnifies;
215
- }
216
- toJSON() {
217
- const context = this.getContext();
218
- return (0, _context.serialise)((context)=>{
219
- const string = this.getString();
220
- let breakPoint;
221
- breakPoint = this.getBreakPoint();
222
- const breakPointJSON = (0, _breakPoint.breakPointToBreakPointJSON)(breakPoint);
223
- breakPoint = breakPointJSON; ///
224
- const json = {
225
- context,
226
- string,
227
- breakPoint
228
- };
229
- return json;
230
- }, context);
231
- }
232
- static name = "Supposition";
233
- static fromJSON(json, context) {
234
- let supposition;
235
- (0, _context.instantiate)((context)=>{
236
- (0, _context.unserialise)((json, context)=>{
237
- const { string } = json, suppositionNode = (0, _instantiate.instantiateSupposition)(string, context), node = suppositionNode, breakPoint = (0, _breakPoint.breakPointFromJSON)(json), statement = statementFromSuppositionNode(suppositionNode, context), procedureCall = (0, _element.procedureCallFromSuppositionNode)(suppositionNode, context);
238
- supposition = new Supposition(context, string, node, breakPoint, statement, procedureCall);
239
- }, json, context);
240
- }, context);
241
- return supposition;
242
- }
243
- });
244
- function statementFromSuppositionNode(suppositionNode, context) {
245
- const statementNode = suppositionNode.getStatementNode(), statement = context.findStatementByStatementNode(statementNode);
246
- return statement;
247
- }
248
-
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3Byb29mQXNzZXJ0aW9uL3N1cHBvc2l0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgUHJvb2ZBc3NlcnRpb24gZnJvbSBcIi4uL3Byb29mQXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVTdXBwb3NpdGlvbn0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHByb2NlZHVyZUNhbGxGcm9tU3VwcG9zaXRpb25Ob2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9icmVha1BvaW50XCI7XG5pbXBvcnQgeyBkZWNsYXJlLCBhdHRlbXB0LCByZWNvbmNpbGUsIHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTdXBwb3NpdGlvbiBleHRlbmRzIFByb29mQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQsIHByb2NlZHVyZUNhbGwpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCk7XG5cbiAgICB0aGlzLnByb2NlZHVyZUNhbGwgPSBwcm9jZWR1cmVDYWxsO1xuICB9XG5cbiAgZ2V0UHJvY2VkdXJlQ2FsbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9jZWR1cmVDYWxsO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzdXBwb3NpdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBzdXBwb3NpdGlvbk5vZGU7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnROb2RlKCkge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uTm9kZSA9IHRoaXMuZ2V0U3VwcG9zaXRpb25Ob2RlKCksXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN1cHBvc2l0aW9uTm9kZS5nZXRTdGF0ZW1lbnROb2RlKCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50Tm9kZTtcbiAgfVxuXG4gIGZpbmRTdWJwcm9vZkFzc2VydGlvbigpIHtcbiAgICBsZXQgc3VicHJvb2ZBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHRoaXMuZ2V0U3RhdGVtZW50Tm9kZSgpO1xuXG4gICAgaWYgKHN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN1YnByb29mQXNzZXJ0aW9uTm9kZSA9IHN0YXRlbWVudE5vZGUuZ2V0U3VicHJvb2ZBc3NlcnRpb25Ob2RlKCk7XG5cbiAgICAgIGlmIChzdWJwcm9vZkFzc2VydGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgICAgIHN1YnByb29mQXNzZXJ0aW9uID0gY29udGV4dC5maW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlKHN1YnByb29mQXNzZXJ0aW9uTm9kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnByb29mQXNzZXJ0aW9uO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5KGNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGF3YWl0IHRoaXMuYnJlYWsoY29udGV4dCk7XG5cbiAgICBjb25zdCBzdXBwb3NpdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgcHJvY2VkdXJlQ2FsbCA9IHRoaXMuZ2V0UHJvY2VkdXJlQ2FsbCgpO1xuXG4gICAgaWYgKChzdGF0ZW1lbnQgIT09IG51bGwpIHx8IChwcm9jZWR1cmVDYWxsICE9PSBudWxsKSkge1xuICAgICAgZGVjbGFyZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB2YWxpZGF0ZXMgPSB0aGlzLnZhbGlkYXRlKGNvbnRleHQpO1xuXG4gICAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgICB2ZXJpZmllcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBVbmFibGUgdG8gdmFsaWRhdGUgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gYmVjYXVzZSBpdCBpcyBub25zZW5zZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZXM7XG4gIH1cblxuICB2YWxpZGF0ZShjb250ZXh0KSB7XG4gICAgbGV0IHZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VwcG9zaXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXR0aW5nIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgcHJvY2VkdXJlQ2FsbCA9IHRoaXMuZ2V0UHJvY2VkdXJlQ2FsbCgpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudFZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQoY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlcykge1xuICAgICAgICAgIHZhbGlkYXRlcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHByb2NlZHVyZUNhbGwgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgcHJvY2VkdXJlQ2FsbFZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGVQcm9jZWR1cmVDYWxsKGNvbnRleHQpO1xuXG4gICAgICAgIGlmIChwcm9jZWR1cmVDYWxsVmFsaWRhdGVzKSB7XG4gICAgICAgICAgdmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuICAgICAgfVxuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChjb250ZXh0KSB7XG4gICAgbGV0IHN0YXRlbWVudFZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VwcG9zaXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbidzIHN0YXRlbWVudC4uLiBgKTtcblxuICAgIGxldCBzdGF0ZW1lbnQ7XG5cbiAgICBzdGF0ZW1lbnQgPSB0aGlzLmdldFN0YXRlbWVudCgpO1xuXG4gICAgc3RhdGVtZW50ID0gc3RhdGVtZW50LnZhbGlkYXRlKGNvbnRleHQpOyAgLy8vXG5cbiAgICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiBzdGF0ZW1lbnQuIGApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVByb2NlZHVyZUNhbGwoY29udGV4dCkge1xuICAgIGxldCBwcm9jZWR1cmVDYWxsVmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdXBwb3NpdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIHByb2NlZHVyZUNhbGxTdHJpbmcgPSB0aGlzLnByb2NlZHVyZUNhbGwuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0dGluZyB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbidzICcke3Byb2NlZHVyZUNhbGxTdHJpbmd9JyBwcm9jZWR1cmUgY2FsbC4uLmApO1xuXG4gICAgY29uc3QgcHJvY2VkdXJlQ2FsbCA9IHRoaXMucHJvY2VkdXJlQ2FsbC52YWxpZGF0ZShjb250ZXh0KTtcblxuICAgIGlmIChwcm9jZWR1cmVDYWxsICE9PSBudWxsKSB7XG4gICAgICBwcm9jZWR1cmVDYWxsVmFsaWRhdGVzID10cnVlO1xuICAgIH1cblxuICAgIGlmIChwcm9jZWR1cmVDYWxsVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24ncyAnJHtwcm9jZWR1cmVDYWxsU3RyaW5nfScgcHJvY2VkdXJlIGNhbGwuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb2NlZHVyZUNhbGxWYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgbGV0IHN1cHBvc2l0aW9uVW5pZmllcztcblxuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBzcGVjaWZpY1N1cHBvc2l0aW9uID0gc3VwcG9zaXRpb24sICAvLy9cbiAgICAgICAgICBnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nID0gc3BlY2lmaWNTdXBwb3NpdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gd2l0aCB0aGUgJyR7Z2VuZXJhbFN1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHNwZWNpZmljU3VwcG9zaXRpb24uZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc3RhdGVtZW50VW5pZmllcyA9IHRoaXMudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIHN1cHBvc2l0aW9uVW5pZmllcyA9IHN0YXRlbWVudFVuaWZpZXM7ICAvLy9cblxuICAgIGlmIChzdXBwb3NpdGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NwZWNpZmljU3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiB3aXRoIHRoZSAnJHtnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb25VbmlmaWVzO1xuICB9XG5cbiAgYXN5bmMgdW5pZnlJbmRlcGVuZGVudGx5KGNvbnRleHQpIHtcbiAgICBsZXQgdW5pZmllc0luZGVwZW5kZW50bHkgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiBpbmRlcGVuZGVudGx5Li4uYCk7XG5cbiAgICBhd2FpdCByZWNvbmNpbGUoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgICBwcm9jZWR1cmVDYWxsID0gdGhpcy5nZXRQcm9jZWR1cmVDYWxsKCk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3Qgc3VwcG9zaXRpb25Db250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gc3VwcG9zaXRpb25Db250ZXh0LCAgLy8vXG4gICAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQsICAvLy9cbiAgICAgICAgICAgICAgc3RhdGVtZW50VW5pZmllc0luZGVwZW5kZW50bHkgPSBzdGF0ZW1lbnQudW5pZnlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzSW5kZXBlbmRlbnRseSkge1xuICAgICAgICAgIHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBwcm9jZWR1cmVDYWxsUmVzb2x2ZWRJbmRlcGVuZGVudGx5ID0gYXdhaXQgcHJvY2VkdXJlQ2FsbC51bmlmeUluZGVwZW5kZW50bHkoY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHByb2NlZHVyZUNhbGxSZXNvbHZlZEluZGVwZW5kZW50bHkpIHtcbiAgICAgICAgICB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBjb250ZXh0KTtcblxuICAgIGlmICh1bmlmaWVzSW5kZXBlbmRlbnRseSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiBpbmRlcGVuZGVudGx5LmApO1xuICAgIH1cblxuICAgIHJldHVybiB1bmlmaWVzSW5kZXBlbmRlbnRseTtcbiAgfVxuXG4gIHVuaWZ5U3VicHJvb2Yoc3VicHJvb2YsIGNvbnRleHQpIHtcbiAgICBsZXQgc3VicHJvb2ZVbmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdXBwb3NpdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIHN1YnByb29mU3RyaW5nID0gc3VicHJvb2YuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3VicHJvb2ZTdHJpbmd9JyBzdWJwcm9vZiB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzdWJwcm9vZkFzc2VydGlvbiA9IHRoaXMuZmluZFN1YnByb29mQXNzZXJ0aW9uKCk7XG5cbiAgICBpZiAoc3VicHJvb2ZBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN1cHBvc2l0aW9uQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBzdXBwb3NpdGlvbkNvbnRleHQsIC8vL1xuICAgICAgICAgICAgc3BzZWNmaWljQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgICBzdWJwcm9vZlVuaWZpZXMgPSBzdWJwcm9vZkFzc2VydGlvbi51bmlmeVN1YnByb29mKHN1YnByb29mLCBnZW5lcmFsQ29udGV4dCwgc3BzZWNmaWljQ29udGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKHN1YnByb29mVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3VicHJvb2ZTdHJpbmd9JyBzdWJwcm9vZiB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdWJwcm9vZlVuaWZpZXM7XG4gIH1cblxuICB1bmlmeVByb29mQXNzZXJ0aW9uKHByb29mQXNzZXJ0aW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IHByb29mQXNzZXJ0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VwcG9zaXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBwcm9vZkFzc2VydGlvblN0cmluZyA9IHByb29mQXNzZXJ0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Byb29mQXNzZXJ0aW9uU3RyaW5nfScgcHJvb2YgYXNzZXJ0aW9uIHdpdGggdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHByb29mQXNzZXJ0aW9uQ29udGV4dCA9IHByb29mQXNzZXJ0aW9uLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdXBwb3NpdGlvbkNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBzdXBwb3NpdGlvbkNvbnRleHQsIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IHByb29mQXNzZXJ0aW9uQ29udGV4dDsgIC8vL1xuXG4gICAgcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudCA9IHByb29mQXNzZXJ0aW9uLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgc3RhdGVtZW50VW5pZmllcyA9IHRoaXMudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICBwcm9vZkFzc2VydGlvblVuaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICBpZiAocHJvb2ZBc3NlcnRpb25VbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtwcm9vZkFzc2VydGlvblN0cmluZ30nIHByb29mIGFzc2VydGlvbiB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9vZkFzc2VydGlvblVuaWZpZXM7XG4gIH1cblxuICB1bmlmeVN1YnByb29mT3JQcm9vZkFzc2VydGlvbihzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24sIGNvbnRleHQpIHtcbiAgICBsZXQgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uVW5pZmllcztcblxuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uU3RyaW5nID0gc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N1YnByb29mT3JQcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIG9yIHByb29mIGFzc2VydGlvbiB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25Qcm9vZkFzc2VydGlvbiA9IHN1YnByb29mT3JQcm9vZkFzc2VydGlvbi5pc1Byb29mQXNzZXJ0aW9uKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9vZkFzc2VydGlvbiA9IHN1YnByb29mT3JQcm9vZkFzc2VydGlvblByb29mQXNzZXJ0aW9uID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24gOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnByb29mID0gc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uUHJvb2ZBc3NlcnRpb24gP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbjtcblxuICAgIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgaWYgKHByb29mQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHByb29mQXNzZXJ0aW9uVW5pZmllcyA9IHRoaXMudW5pZnlQcm9vZkFzc2VydGlvbihwcm9vZkFzc2VydGlvbiwgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHByb29mQXNzZXJ0aW9uVW5pZmllcykge1xuICAgICAgICAgIHN1YnByb29mT3JQcm9vZkFzc2VydGlvblVuaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzdWJwcm9vZiAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBzdWJwcm9vZlVuaWZpZXMgPSB0aGlzLnVuaWZ5U3VicHJvb2Yoc3VicHJvb2YsIGNvbnRleHQpO1xuXG4gICAgICAgIGlmIChzdWJwcm9vZlVuaWZpZXMpIHtcbiAgICAgICAgICBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25VbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uVW5pZmllcykge1xuICAgICAgICBjb250ZXh0LmNvbW1pdCgpO1xuICAgICAgfVxuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgaWYgKHN1YnByb29mT3JQcm9vZkFzc2VydGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1YnByb29mT3JQcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIG9yIHByb29mIGFzc2VydGlvbiB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25VbmlmaWVzO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHJldHVybiBzZXJpYWxpc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgICBjb25zdCBqc29uID0ge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBzdHJpbmcsXG4gICAgICAgIGJyZWFrUG9pbnRcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBqc29uO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlN1cHBvc2l0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgc3VwcG9zaXRpb247XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHN1cHBvc2l0aW9uTm9kZSA9IGluc3RhbnRpYXRlU3VwcG9zaXRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IHN1cHBvc2l0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tU3VwcG9zaXRpb25Ob2RlKHN1cHBvc2l0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHByb2NlZHVyZUNhbGwgPSBwcm9jZWR1cmVDYWxsRnJvbVN1cHBvc2l0aW9uTm9kZShzdXBwb3NpdGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHN1cHBvc2l0aW9uID0gbmV3IFN1cHBvc2l0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50LCBwcm9jZWR1cmVDYWxsKTtcbiAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gc3RhdGVtZW50RnJvbVN1cHBvc2l0aW9uTm9kZShzdXBwb3NpdGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN1cHBvc2l0aW9uTm9kZS5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuIl0sIm5hbWVzIjpbImRlZmluZSIsIlN1cHBvc2l0aW9uIiwiUHJvb2ZBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJzdGF0ZW1lbnQiLCJwcm9jZWR1cmVDYWxsIiwiZ2V0UHJvY2VkdXJlQ2FsbCIsImdldFN1cHBvc2l0aW9uTm9kZSIsImdldE5vZGUiLCJzdXBwb3NpdGlvbk5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsImZpbmRTdWJwcm9vZkFzc2VydGlvbiIsInN1YnByb29mQXNzZXJ0aW9uIiwic3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwiZ2V0U3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwiZ2V0Q29udGV4dCIsImZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUiLCJ2ZXJpZnkiLCJ2ZXJpZmllcyIsImJyZWFrIiwic3VwcG9zaXRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImdldFN0YXRlbWVudCIsImRlY2xhcmUiLCJ2YWxpZGF0ZXMiLCJ2YWxpZGF0ZSIsImRlYnVnIiwiYXR0ZW1wdCIsInN0YXRlbWVudFZhbGlkYXRlcyIsInZhbGlkYXRlU3RhdGVtZW50IiwicHJvY2VkdXJlQ2FsbFZhbGlkYXRlcyIsInZhbGlkYXRlUHJvY2VkdXJlQ2FsbCIsImNvbW1pdCIsInByb2NlZHVyZUNhbGxTdHJpbmciLCJ1bmlmeVN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb24iLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInN1cHBvc2l0aW9uVW5pZmllcyIsInNwZWNpZmljU3VwcG9zaXRpb24iLCJnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmciLCJzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nIiwic3RhdGVtZW50VW5pZmllcyIsInVuaWZ5U3RhdGVtZW50IiwidW5pZnlJbmRlcGVuZGVudGx5IiwidW5pZmllc0luZGVwZW5kZW50bHkiLCJyZWNvbmNpbGUiLCJzdXBwb3NpdGlvbkNvbnRleHQiLCJzdGF0ZW1lbnRVbmlmaWVzSW5kZXBlbmRlbnRseSIsInByb2NlZHVyZUNhbGxSZXNvbHZlZEluZGVwZW5kZW50bHkiLCJ1bmlmeVN1YnByb29mIiwic3VicHJvb2YiLCJzdWJwcm9vZlVuaWZpZXMiLCJzdWJwcm9vZlN0cmluZyIsInNwc2VjZmlpY0NvbnRleHQiLCJ1bmlmeVByb29mQXNzZXJ0aW9uIiwicHJvb2ZBc3NlcnRpb24iLCJwcm9vZkFzc2VydGlvblVuaWZpZXMiLCJwcm9vZkFzc2VydGlvblN0cmluZyIsInByb29mQXNzZXJ0aW9uQ29udGV4dCIsInVuaWZ5U3VicHJvb2ZPclByb29mQXNzZXJ0aW9uIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9uIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9uVW5pZmllcyIsInN1YnByb29mT3JQcm9vZkFzc2VydGlvblN0cmluZyIsInN1YnByb29mT3JQcm9vZkFzc2VydGlvblByb29mQXNzZXJ0aW9uIiwiaXNQcm9vZkFzc2VydGlvbiIsInRvSlNPTiIsInNlcmlhbGlzZSIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZVN1cHBvc2l0aW9uIiwiYnJlYWtQb2ludEZyb21KU09OIiwic3RhdGVtZW50RnJvbVN1cHBvc2l0aW9uTm9kZSIsInByb2NlZHVyZUNhbGxGcm9tU3VwcG9zaXRpb25Ob2RlIiwiZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBVUE7OztlQUFBOzs7dUVBUjJCOzBCQUVKOzZCQUNlO3lCQUNXOzRCQUNjO3lCQUNrQjs7Ozs7O01BRWpGLFdBQWVBLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsb0JBQW9CQyx1QkFBYztJQUM1RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsRUFBRUMsYUFBYSxDQUFFO1FBQ3ZFLEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUMsTUFBTUMsWUFBWUM7UUFFekMsSUFBSSxDQUFDQyxhQUFhLEdBQUdBO0lBQ3ZCO0lBRUFDLG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQ0QsYUFBYTtJQUMzQjtJQUVBRSxxQkFBcUI7UUFDbkIsTUFBTUwsT0FBTyxJQUFJLENBQUNNLE9BQU8sSUFDbkJDLGtCQUFrQlAsTUFBTSxHQUFHO1FBRWpDLE9BQU9PO0lBQ1Q7SUFFQUMsbUJBQW1CO1FBQ2pCLE1BQU1ELGtCQUFrQixJQUFJLENBQUNGLGtCQUFrQixJQUN6Q0ksZ0JBQWdCRixnQkFBZ0JDLGdCQUFnQjtRQUV0RCxPQUFPQztJQUNUO0lBRUFDLHdCQUF3QjtRQUN0QixJQUFJQyxvQkFBb0I7UUFFeEIsTUFBTUYsZ0JBQWdCLElBQUksQ0FBQ0QsZ0JBQWdCO1FBRTNDLElBQUlDLGtCQUFrQixNQUFNO1lBQzFCLE1BQU1HLHdCQUF3QkgsY0FBY0ksd0JBQXdCO1lBRXBFLElBQUlELDBCQUEwQixNQUFNO2dCQUNsQyxNQUFNZCxVQUFVLElBQUksQ0FBQ2dCLFVBQVU7Z0JBRS9CSCxvQkFBb0JiLFFBQVFpQiw0QkFBNEIsQ0FBQ0g7WUFDM0Q7UUFDRjtRQUVBLE9BQU9EO0lBQ1Q7SUFFQSxNQUFNSyxPQUFPbEIsT0FBTyxFQUFFO1FBQ3BCLElBQUltQixXQUFXO1FBRWYsTUFBTSxJQUFJLENBQUNDLEtBQUssQ0FBQ3BC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
@@ -1,56 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return ProofAssertion;
9
- }
10
- });
11
- const _occamlanguages = require("occam-languages");
12
- const _equate = require("../process/equate");
13
- class ProofAssertion extends _occamlanguages.Element {
14
- constructor(context, string, node, breakPoint, statement){
15
- super(context, string, node, breakPoint);
16
- this.statement = statement;
17
- }
18
- getStatement() {
19
- return this.statement;
20
- }
21
- getProofAssertionNode() {
22
- const node = this.getNode(), proofAssertionNode = node; ///
23
- return proofAssertionNode;
24
- }
25
- isProofAssertion() {
26
- const proofAssertion = true;
27
- return proofAssertion;
28
- }
29
- compareStep(step, context) {
30
- let comparesToStep = false;
31
- const stepString = step.getString(), proofAssertionString = this.getString(); ///
32
- context.trace(`Comparing the '${stepString}' step to the '${proofAssertionString}' proof assertion...`);
33
- const statement = step.getStatement(), leftStatement = statement, rightStatement = this.statement, statementsEquate = (0, _equate.equateStatements)(leftStatement, rightStatement, context);
34
- if (statementsEquate) {
35
- comparesToStep = true;
36
- }
37
- if (comparesToStep) {
38
- context.debug(`...compared the '${stepString}' step to the '${proofAssertionString}' proof assertion.`);
39
- }
40
- return comparesToStep;
41
- }
42
- unifyStatement(statement, generalContext, specificContext) {
43
- let statementUnifies = false;
44
- if (this.statement !== null) {
45
- const context = specificContext, statementString = statement.getString(), proofAssertionString = this.getString(); ///
46
- context.trace(`Unifying the '${statementString}' statement with the '${proofAssertionString}' proof assertion's statement...`);
47
- statementUnifies = this.statement.unifyStatement(statement, generalContext, specificContext);
48
- if (statementUnifies) {
49
- context.debug(`...unified the '${statementString}' statement with the '${proofAssertionString}' proof assertion's statement.`);
50
- }
51
- }
52
- return statementUnifies;
53
- }
54
- }
55
-
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Byb29mQXNzZXJ0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBlcXVhdGVTdGF0ZW1lbnRzIH0gZnJvbSBcIi4uL3Byb2Nlc3MvZXF1YXRlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByb29mQXNzZXJ0aW9uIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFByb29mQXNzZXJ0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgcHJvb2ZBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHByb29mQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIGlzUHJvb2ZBc3NlcnRpb24oKSB7XG4gICAgY29uc3QgcHJvb2ZBc3NlcnRpb24gPSB0cnVlO1xuXG4gICAgcmV0dXJuIHByb29mQXNzZXJ0aW9uO1xuICB9XG5cbiAgY29tcGFyZVN0ZXAoc3RlcCwgY29udGV4dCkge1xuICAgIGxldCBjb21wYXJlc1RvU3RlcCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgcHJvb2ZBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBDb21wYXJpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHRvIHRoZSAnJHtwcm9vZkFzc2VydGlvblN0cmluZ30nIHByb29mIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBsZWZ0U3RhdGVtZW50ID0gc3RhdGVtZW50LCAgLy8vXG4gICAgICAgICAgcmlnaHRTdGF0ZW1lbnQgPSB0aGlzLnN0YXRlbWVudCwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudHNFcXVhdGUgPSBlcXVhdGVTdGF0ZW1lbnRzKGxlZnRTdGF0ZW1lbnQsIHJpZ2h0U3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgIGlmIChzdGF0ZW1lbnRzRXF1YXRlKSB7XG4gICAgICBjb21wYXJlc1RvU3RlcCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGNvbXBhcmVzVG9TdGVwKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5jb21wYXJlZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgdG8gdGhlICcke3Byb29mQXNzZXJ0aW9uU3RyaW5nfScgcHJvb2YgYXNzZXJ0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiBjb21wYXJlc1RvU3RlcDtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBzdGF0ZW1lbnRVbmlmaWVzID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5zdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgICAgcHJvb2ZBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7cHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBwcm9vZiBhc3NlcnRpb24ncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgICAgc3RhdGVtZW50VW5pZmllcyA9IHRoaXMuc3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtwcm9vZkFzc2VydGlvblN0cmluZ30nIHByb29mIGFzc2VydGlvbidzIHN0YXRlbWVudC5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VW5pZmllcztcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlByb29mQXNzZXJ0aW9uIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImdldFByb29mQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJwcm9vZkFzc2VydGlvbk5vZGUiLCJpc1Byb29mQXNzZXJ0aW9uIiwicHJvb2ZBc3NlcnRpb24iLCJjb21wYXJlU3RlcCIsInN0ZXAiLCJjb21wYXJlc1RvU3RlcCIsInN0ZXBTdHJpbmciLCJnZXRTdHJpbmciLCJwcm9vZkFzc2VydGlvblN0cmluZyIsInRyYWNlIiwibGVmdFN0YXRlbWVudCIsInJpZ2h0U3RhdGVtZW50Iiwic3RhdGVtZW50c0VxdWF0ZSIsImVxdWF0ZVN0YXRlbWVudHMiLCJkZWJ1ZyIsInVuaWZ5U3RhdGVtZW50IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJzdGF0ZW1lbnRVbmlmaWVzIiwic3RhdGVtZW50U3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQTs7O2VBQXFCQTs7O2dDQUpHO3dCQUVTO0FBRWxCLE1BQU1BLHVCQUF1QkMsdUJBQU87SUFDakQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxTQUFTLENBQUU7UUFDeEQsS0FBSyxDQUFDSixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLFNBQVMsR0FBR0E7SUFDbkI7SUFFQUMsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDRCxTQUFTO0lBQ3ZCO0lBRUFFLHdCQUF3QjtRQUN0QixNQUFNSixPQUFPLElBQUksQ0FBQ0ssT0FBTyxJQUNuQkMscUJBQXFCTixNQUFPLEdBQUc7UUFFckMsT0FBT007SUFDVDtJQUVBQyxtQkFBbUI7UUFDakIsTUFBTUMsaUJBQWlCO1FBRXZCLE9BQU9BO0lBQ1Q7SUFFQUMsWUFBWUMsSUFBSSxFQUFFWixPQUFPLEVBQUU7UUFDekIsSUFBSWEsaUJBQWlCO1FBRXJCLE1BQU1DLGFBQWFGLEtBQUtHLFNBQVMsSUFDM0JDLHVCQUF1QixJQUFJLENBQUNELFNBQVMsSUFBSyxHQUFHO1FBRW5EZixRQUFRaUIsS0FBSyxDQUFDLENBQUMsZUFBZSxFQUFFSCxXQUFXLGVBQWUsRUFBRUUscUJBQXFCLG9CQUFvQixDQUFDO1FBRXRHLE1BQU1aLFlBQVlRLEtBQUtQLFlBQVksSUFDN0JhLGdCQUFnQmQsV0FDaEJlLGlCQUFpQixJQUFJLENBQUNmLFNBQVMsRUFDL0JnQixtQkFBbUJDLElBQUFBLHdCQUFnQixFQUFDSCxlQUFlQyxnQkFBZ0JuQjtRQUV6RSxJQUFJb0Isa0JBQWtCO1lBQ3BCUCxpQkFBaUI7UUFDbkI7UUFFQSxJQUFJQSxnQkFBZ0I7WUFDbEJiLFFBQVFzQixLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRVIsV0FBVyxlQUFlLEVBQUVFLHFCQUFxQixrQkFBa0IsQ0FBQztRQUN4RztRQUVBLE9BQU9IO0lBQ1Q7SUFFQVUsZUFBZW5CLFNBQVMsRUFBRW9CLGNBQWMsRUFBRUMsZUFBZSxFQUFFO1FBQ3pELElBQUlDLG1CQUFtQjtRQUV2QixJQUFJLElBQUksQ0FBQ3RCLFNBQVMsS0FBSyxNQUFNO1lBQzNCLE1BQU1KLFVBQVV5QixpQkFDVkUsa0JBQWtCdkIsVUFBVVcsU0FBUyxJQUNyQ0MsdUJBQXVCLElBQUksQ0FBQ0QsU0FBUyxJQUFLLEdBQUc7WUFFbkRmLFFBQVFpQixLQUFLLENBQUMsQ0FBQyxjQUFjLEVBQUVVLGdCQUFnQixzQkFBc0IsRUFBRVgscUJBQXFCLGdDQUFnQyxDQUFDO1lBRTdIVSxtQkFBbUIsSUFBSSxDQUFDdEIsU0FBUyxDQUFDbUIsY0FBYyxDQUFDbkIsV0FBV29CLGdCQUFnQkM7WUFFNUUsSUFBSUMsa0JBQWtCO2dCQUNwQjFCLFFBQVFzQixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUssZ0JBQWdCLHNCQUFzQixFQUFFWCxxQkFBcUIsOEJBQThCLENBQUM7WUFDL0g7UUFDRjtRQUVBLE9BQU9VO0lBQ1Q7QUFDRiJ9