breeze-client 2.1.2 → 2.1.3-mjs

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 (397) hide show
  1. package/LICENSE +1 -1
  2. package/adapter-ajax-angularjs/{breeze-client-adapter-ajax-angularjs.d.ts → index.d.ts} +1 -0
  3. package/adapter-ajax-fetch/{breeze-client-adapter-ajax-fetch.d.ts → index.d.ts} +1 -0
  4. package/adapter-ajax-httpclient/{breeze-client-adapter-ajax-httpclient.d.ts → index.d.ts} +1 -0
  5. package/adapter-ajax-jquery/{breeze-client-adapter-ajax-jquery.d.ts → index.d.ts} +1 -0
  6. package/adapter-ajax-post/{breeze-client-adapter-ajax-post.d.ts → index.d.ts} +1 -0
  7. package/adapter-data-service-odata/{breeze-client-adapter-data-service-odata.d.ts → index.d.ts} +1 -0
  8. package/adapter-data-service-webapi/{breeze-client-adapter-data-service-webapi.d.ts → index.d.ts} +1 -0
  9. package/adapter-model-library-backing-store/{breeze-client-adapter-model-library-backing-store.d.ts → index.d.ts} +1 -0
  10. package/adapter-model-library-ko/{breeze-client-adapter-model-library-ko.d.ts → index.d.ts} +1 -0
  11. package/adapter-uri-builder-json/{breeze-client-adapter-uri-builder-json.d.ts → index.d.ts} +1 -0
  12. package/adapter-uri-builder-odata/{breeze-client-adapter-uri-builder-odata.d.ts → index.d.ts} +1 -0
  13. package/esm2020/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +130 -0
  14. package/esm2020/adapter-ajax-angularjs/adapter-core.mjs +49 -0
  15. package/esm2020/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +5 -0
  16. package/esm2020/adapter-ajax-fetch/adapter-ajax-fetch.mjs +132 -0
  17. package/esm2020/adapter-ajax-fetch/adapter-core.mjs +49 -0
  18. package/esm2020/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +5 -0
  19. package/esm2020/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +137 -0
  20. package/esm2020/adapter-ajax-httpclient/adapter-core.mjs +49 -0
  21. package/esm2020/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +5 -0
  22. package/esm2020/adapter-ajax-jquery/adapter-ajax-jquery.mjs +103 -0
  23. package/esm2020/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +5 -0
  24. package/esm2020/adapter-ajax-post/adapter-ajax-post.mjs +77 -0
  25. package/esm2020/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +5 -0
  26. package/esm2020/adapter-data-service-odata/adapter-core.mjs +49 -0
  27. package/esm2020/adapter-data-service-odata/adapter-data-service-odata.mjs +456 -0
  28. package/esm2020/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +5 -0
  29. package/esm2020/adapter-data-service-webapi/adapter-data-service-webapi.mjs +93 -0
  30. package/esm2020/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +5 -0
  31. package/esm2020/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +268 -0
  32. package/esm2020/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +5 -0
  33. package/esm2020/adapter-model-library-ko/adapter-model-library-ko.mjs +240 -0
  34. package/esm2020/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +5 -0
  35. package/esm2020/adapter-uri-builder-json/adapter-core.mjs +49 -0
  36. package/esm2020/adapter-uri-builder-json/adapter-uri-builder-json.mjs +36 -0
  37. package/esm2020/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +5 -0
  38. package/esm2020/adapter-uri-builder-odata/adapter-core.mjs +49 -0
  39. package/esm2020/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +190 -0
  40. package/esm2020/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +5 -0
  41. package/esm2020/breeze-client.mjs +5 -0
  42. package/esm2020/index.mjs +2 -0
  43. package/esm2020/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +5 -0
  44. package/esm2020/mixin-get-entity-graph/mixin-get-entity-graph.mjs +269 -0
  45. package/esm2020/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +5 -0
  46. package/esm2020/mixin-save-queuing/mixin-save-queuing.mjs +400 -0
  47. package/esm2020/src/abstract-data-service-adapter.mjs +296 -0
  48. package/esm2020/src/array.mjs +4 -0
  49. package/esm2020/src/assert-param.mjs +312 -0
  50. package/esm2020/src/breeze.mjs +85 -0
  51. package/esm2020/src/complex-array.mjs +117 -0
  52. package/esm2020/src/config.mjs +223 -0
  53. package/esm2020/src/core.mjs +707 -0
  54. package/esm2020/src/csdl-metadata-parser.mjs +385 -0
  55. package/esm2020/src/data-service.mjs +203 -0
  56. package/esm2020/src/data-type.mjs +444 -0
  57. package/esm2020/src/default-property-interceptor.mjs +460 -0
  58. package/esm2020/src/entity-action.mjs +45 -0
  59. package/esm2020/src/entity-aspect.mjs +806 -0
  60. package/esm2020/src/entity-group.mjs +187 -0
  61. package/esm2020/src/entity-key.mjs +116 -0
  62. package/esm2020/src/entity-manager.mjs +2094 -0
  63. package/esm2020/src/entity-metadata.mjs +2109 -0
  64. package/esm2020/src/entity-query.mjs +996 -0
  65. package/esm2020/src/entity-state.mjs +99 -0
  66. package/esm2020/src/enum.mjs +141 -0
  67. package/esm2020/src/event.mjs +256 -0
  68. package/esm2020/src/interface-registry.mjs +41 -0
  69. package/esm2020/src/key-generator.mjs +108 -0
  70. package/esm2020/src/local-query-comparison-options.mjs +65 -0
  71. package/esm2020/src/mapping-context.mjs +405 -0
  72. package/esm2020/src/naming-convention.mjs +88 -0
  73. package/esm2020/src/observable-array.mjs +183 -0
  74. package/esm2020/src/predicate.mjs +1232 -0
  75. package/esm2020/src/primitive-array.mjs +85 -0
  76. package/esm2020/src/query-options.mjs +152 -0
  77. package/esm2020/src/relation-array.mjs +173 -0
  78. package/esm2020/src/save-options.mjs +41 -0
  79. package/esm2020/src/unattached-children-map.mjs +58 -0
  80. package/esm2020/src/validate.mjs +988 -0
  81. package/esm2020/src/validation-options.mjs +64 -0
  82. package/fesm2015/{breeze-client-adapter-ajax-angularjs.js → breeze-client-adapter-ajax-angularjs.mjs} +1 -1
  83. package/fesm2015/breeze-client-adapter-ajax-angularjs.mjs.map +1 -0
  84. package/fesm2015/{breeze-client-adapter-ajax-fetch.js → breeze-client-adapter-ajax-fetch.mjs} +5 -3
  85. package/fesm2015/breeze-client-adapter-ajax-fetch.mjs.map +1 -0
  86. package/fesm2015/{breeze-client-adapter-ajax-httpclient.js → breeze-client-adapter-ajax-httpclient.mjs} +1 -1
  87. package/fesm2015/breeze-client-adapter-ajax-httpclient.mjs.map +1 -0
  88. package/fesm2015/{breeze-client-adapter-ajax-jquery.js → breeze-client-adapter-ajax-jquery.mjs} +2 -2
  89. package/fesm2015/breeze-client-adapter-ajax-jquery.mjs.map +1 -0
  90. package/fesm2015/{breeze-client-adapter-ajax-post.js → breeze-client-adapter-ajax-post.mjs} +1 -1
  91. package/fesm2015/breeze-client-adapter-ajax-post.mjs.map +1 -0
  92. package/fesm2015/{breeze-client-adapter-data-service-odata.js → breeze-client-adapter-data-service-odata.mjs} +20 -22
  93. package/fesm2015/breeze-client-adapter-data-service-odata.mjs.map +1 -0
  94. package/fesm2015/{breeze-client-adapter-data-service-webapi.js → breeze-client-adapter-data-service-webapi.mjs} +13 -13
  95. package/fesm2015/breeze-client-adapter-data-service-webapi.mjs.map +1 -0
  96. package/fesm2015/{breeze-client-adapter-model-library-backing-store.js → breeze-client-adapter-model-library-backing-store.mjs} +13 -13
  97. package/fesm2015/breeze-client-adapter-model-library-backing-store.mjs.map +1 -0
  98. package/fesm2015/{breeze-client-adapter-model-library-ko.js → breeze-client-adapter-model-library-ko.mjs} +13 -13
  99. package/fesm2015/breeze-client-adapter-model-library-ko.mjs.map +1 -0
  100. package/fesm2015/{breeze-client-adapter-uri-builder-json.js → breeze-client-adapter-uri-builder-json.mjs} +8 -8
  101. package/fesm2015/breeze-client-adapter-uri-builder-json.mjs.map +1 -0
  102. package/fesm2015/{breeze-client-adapter-uri-builder-odata.js → breeze-client-adapter-uri-builder-odata.mjs} +85 -86
  103. package/fesm2015/breeze-client-adapter-uri-builder-odata.mjs.map +1 -0
  104. package/fesm2015/{breeze-client-mixin-get-entity-graph.js → breeze-client-mixin-get-entity-graph.mjs} +1 -1
  105. package/fesm2015/breeze-client-mixin-get-entity-graph.mjs.map +1 -0
  106. package/fesm2015/{breeze-client-mixin-save-queuing.js → breeze-client-mixin-save-queuing.mjs} +1 -1
  107. package/fesm2015/breeze-client-mixin-save-queuing.mjs.map +1 -0
  108. package/fesm2015/{breeze-client.js → breeze-client.mjs} +417 -422
  109. package/fesm2015/breeze-client.mjs.map +1 -0
  110. package/{fesm5/breeze-client-adapter-ajax-angularjs.js → fesm2020/breeze-client-adapter-ajax-angularjs.mjs} +41 -42
  111. package/fesm2020/breeze-client-adapter-ajax-angularjs.mjs.map +1 -0
  112. package/{fesm5/breeze-client-adapter-ajax-fetch.js → fesm2020/breeze-client-adapter-ajax-fetch.mjs} +44 -43
  113. package/fesm2020/breeze-client-adapter-ajax-fetch.mjs.map +1 -0
  114. package/{fesm5/breeze-client-adapter-ajax-httpclient.js → fesm2020/breeze-client-adapter-ajax-httpclient.mjs} +43 -44
  115. package/fesm2020/breeze-client-adapter-ajax-httpclient.mjs.map +1 -0
  116. package/{fesm5/breeze-client-adapter-ajax-jquery.js → fesm2020/breeze-client-adapter-ajax-jquery.mjs} +18 -19
  117. package/fesm2020/breeze-client-adapter-ajax-jquery.mjs.map +1 -0
  118. package/{fesm5/breeze-client-adapter-ajax-post.js → fesm2020/breeze-client-adapter-ajax-post.mjs} +8 -11
  119. package/fesm2020/breeze-client-adapter-ajax-post.mjs.map +1 -0
  120. package/{fesm5/breeze-client-adapter-data-service-odata.js → fesm2020/breeze-client-adapter-data-service-odata.mjs} +126 -134
  121. package/fesm2020/breeze-client-adapter-data-service-odata.mjs.map +1 -0
  122. package/{fesm5/breeze-client-adapter-data-service-webapi.js → fesm2020/breeze-client-adapter-data-service-webapi.mjs} +38 -42
  123. package/fesm2020/breeze-client-adapter-data-service-webapi.mjs.map +1 -0
  124. package/{fesm5/breeze-client-adapter-model-library-backing-store.js → fesm2020/breeze-client-adapter-model-library-backing-store.mjs} +63 -64
  125. package/fesm2020/breeze-client-adapter-model-library-backing-store.mjs.map +1 -0
  126. package/{fesm5/breeze-client-adapter-model-library-ko.js → fesm2020/breeze-client-adapter-model-library-ko.mjs} +57 -58
  127. package/fesm2020/breeze-client-adapter-model-library-ko.mjs.map +1 -0
  128. package/fesm2020/breeze-client-adapter-uri-builder-json.mjs +91 -0
  129. package/fesm2020/breeze-client-adapter-uri-builder-json.mjs.map +1 -0
  130. package/fesm2020/breeze-client-adapter-uri-builder-odata.mjs +245 -0
  131. package/fesm2020/breeze-client-adapter-uri-builder-odata.mjs.map +1 -0
  132. package/{fesm5/breeze-client-mixin-get-entity-graph.js → fesm2020/breeze-client-mixin-get-entity-graph.mjs} +45 -45
  133. package/fesm2020/breeze-client-mixin-get-entity-graph.mjs.map +1 -0
  134. package/{fesm5/breeze-client-mixin-save-queuing.js → fesm2020/breeze-client-mixin-save-queuing.mjs} +116 -126
  135. package/fesm2020/breeze-client-mixin-save-queuing.mjs.map +1 -0
  136. package/{fesm5/breeze-client.js → fesm2020/breeze-client.mjs} +3403 -3615
  137. package/fesm2020/breeze-client.mjs.map +1 -0
  138. package/mixin-get-entity-graph/{breeze-client-mixin-get-entity-graph.d.ts → index.d.ts} +1 -0
  139. package/mixin-save-queuing/{breeze-client-mixin-save-queuing.d.ts → index.d.ts} +1 -0
  140. package/package.json +126 -12
  141. package/src/entity-metadata.d.ts +6 -4
  142. package/src/entity-query.d.ts +1 -1
  143. package/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.metadata.json +0 -1
  144. package/adapter-ajax-angularjs/package.json +0 -13
  145. package/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.metadata.json +0 -1
  146. package/adapter-ajax-fetch/package.json +0 -13
  147. package/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.metadata.json +0 -1
  148. package/adapter-ajax-httpclient/package.json +0 -17
  149. package/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.metadata.json +0 -1
  150. package/adapter-ajax-jquery/package.json +0 -13
  151. package/adapter-ajax-post/breeze-client-adapter-ajax-post.metadata.json +0 -1
  152. package/adapter-ajax-post/package.json +0 -13
  153. package/adapter-data-service-odata/breeze-client-adapter-data-service-odata.metadata.json +0 -1
  154. package/adapter-data-service-odata/package.json +0 -13
  155. package/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.metadata.json +0 -1
  156. package/adapter-data-service-webapi/package.json +0 -13
  157. package/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.metadata.json +0 -1
  158. package/adapter-model-library-backing-store/package.json +0 -13
  159. package/adapter-model-library-ko/breeze-client-adapter-model-library-ko.metadata.json +0 -1
  160. package/adapter-model-library-ko/package.json +0 -13
  161. package/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.metadata.json +0 -1
  162. package/adapter-uri-builder-json/package.json +0 -13
  163. package/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.metadata.json +0 -1
  164. package/adapter-uri-builder-odata/package.json +0 -13
  165. package/breeze-client.d.ts +0 -8
  166. package/breeze-client.metadata.json +0 -1
  167. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js +0 -190
  168. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js.map +0 -1
  169. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js +0 -2
  170. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js.map +0 -1
  171. package/bundles/breeze-client-adapter-ajax-fetch.umd.js +0 -190
  172. package/bundles/breeze-client-adapter-ajax-fetch.umd.js.map +0 -1
  173. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js +0 -2
  174. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js.map +0 -1
  175. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js +0 -195
  176. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js.map +0 -1
  177. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js +0 -2
  178. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js.map +0 -1
  179. package/bundles/breeze-client-adapter-ajax-jquery.umd.js +0 -115
  180. package/bundles/breeze-client-adapter-ajax-jquery.umd.js.map +0 -1
  181. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js +0 -2
  182. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js.map +0 -1
  183. package/bundles/breeze-client-adapter-ajax-post.umd.js +0 -92
  184. package/bundles/breeze-client-adapter-ajax-post.umd.js.map +0 -1
  185. package/bundles/breeze-client-adapter-ajax-post.umd.min.js +0 -2
  186. package/bundles/breeze-client-adapter-ajax-post.umd.min.js.map +0 -1
  187. package/bundles/breeze-client-adapter-data-service-odata.umd.js +0 -743
  188. package/bundles/breeze-client-adapter-data-service-odata.umd.js.map +0 -1
  189. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js +0 -16
  190. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js.map +0 -1
  191. package/bundles/breeze-client-adapter-data-service-webapi.umd.js +0 -326
  192. package/bundles/breeze-client-adapter-data-service-webapi.umd.js.map +0 -1
  193. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js +0 -16
  194. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js.map +0 -1
  195. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js +0 -280
  196. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js.map +0 -1
  197. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js +0 -2
  198. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js.map +0 -1
  199. package/bundles/breeze-client-adapter-model-library-ko.umd.js +0 -252
  200. package/bundles/breeze-client-adapter-model-library-ko.umd.js.map +0 -1
  201. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js +0 -2
  202. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js.map +0 -1
  203. package/bundles/breeze-client-adapter-uri-builder-json.umd.js +0 -96
  204. package/bundles/breeze-client-adapter-uri-builder-json.umd.js.map +0 -1
  205. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js +0 -2
  206. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js.map +0 -1
  207. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js +0 -262
  208. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js.map +0 -1
  209. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js +0 -2
  210. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js.map +0 -1
  211. package/bundles/breeze-client-mixin-get-entity-graph.umd.js +0 -258
  212. package/bundles/breeze-client-mixin-get-entity-graph.umd.js.map +0 -1
  213. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js +0 -2
  214. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js.map +0 -1
  215. package/bundles/breeze-client-mixin-save-queuing.umd.js +0 -579
  216. package/bundles/breeze-client-mixin-save-queuing.umd.js.map +0 -1
  217. package/bundles/breeze-client-mixin-save-queuing.umd.min.js +0 -16
  218. package/bundles/breeze-client-mixin-save-queuing.umd.min.js.map +0 -1
  219. package/bundles/breeze-client.umd.js +0 -14094
  220. package/bundles/breeze-client.umd.js.map +0 -1
  221. package/bundles/breeze-client.umd.min.js +0 -16
  222. package/bundles/breeze-client.umd.min.js.map +0 -1
  223. package/esm2015/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -130
  224. package/esm2015/adapter-ajax-angularjs/adapter-core.js +0 -49
  225. package/esm2015/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  226. package/esm2015/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -130
  227. package/esm2015/adapter-ajax-fetch/adapter-core.js +0 -49
  228. package/esm2015/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  229. package/esm2015/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -137
  230. package/esm2015/adapter-ajax-httpclient/adapter-core.js +0 -49
  231. package/esm2015/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  232. package/esm2015/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -103
  233. package/esm2015/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  234. package/esm2015/adapter-ajax-post/adapter-ajax-post.js +0 -77
  235. package/esm2015/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  236. package/esm2015/adapter-data-service-odata/adapter-core.js +0 -49
  237. package/esm2015/adapter-data-service-odata/adapter-data-service-odata.js +0 -459
  238. package/esm2015/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  239. package/esm2015/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -93
  240. package/esm2015/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  241. package/esm2015/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -268
  242. package/esm2015/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  243. package/esm2015/adapter-model-library-ko/adapter-model-library-ko.js +0 -240
  244. package/esm2015/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  245. package/esm2015/adapter-uri-builder-json/adapter-core.js +0 -49
  246. package/esm2015/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -36
  247. package/esm2015/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  248. package/esm2015/adapter-uri-builder-odata/adapter-core.js +0 -49
  249. package/esm2015/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -192
  250. package/esm2015/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  251. package/esm2015/breeze-client.js +0 -9
  252. package/esm2015/index.js +0 -2
  253. package/esm2015/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  254. package/esm2015/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  255. package/esm2015/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  256. package/esm2015/mixin-save-queuing/mixin-save-queuing.js +0 -400
  257. package/esm2015/public_api.js +0 -2
  258. package/esm2015/src/abstract-data-service-adapter.js +0 -296
  259. package/esm2015/src/array.js +0 -4
  260. package/esm2015/src/assert-param.js +0 -312
  261. package/esm2015/src/breeze.js +0 -85
  262. package/esm2015/src/complex-array.js +0 -119
  263. package/esm2015/src/config.js +0 -223
  264. package/esm2015/src/core.js +0 -706
  265. package/esm2015/src/csdl-metadata-parser.js +0 -385
  266. package/esm2015/src/data-service.js +0 -203
  267. package/esm2015/src/data-type.js +0 -444
  268. package/esm2015/src/default-property-interceptor.js +0 -459
  269. package/esm2015/src/entity-action.js +0 -45
  270. package/esm2015/src/entity-aspect.js +0 -806
  271. package/esm2015/src/entity-group.js +0 -187
  272. package/esm2015/src/entity-key.js +0 -116
  273. package/esm2015/src/entity-manager.js +0 -2094
  274. package/esm2015/src/entity-metadata.js +0 -2109
  275. package/esm2015/src/entity-query.js +0 -996
  276. package/esm2015/src/entity-state.js +0 -99
  277. package/esm2015/src/enum.js +0 -141
  278. package/esm2015/src/event.js +0 -256
  279. package/esm2015/src/interface-registry.js +0 -41
  280. package/esm2015/src/key-generator.js +0 -108
  281. package/esm2015/src/local-query-comparison-options.js +0 -65
  282. package/esm2015/src/mapping-context.js +0 -405
  283. package/esm2015/src/naming-convention.js +0 -88
  284. package/esm2015/src/observable-array.js +0 -185
  285. package/esm2015/src/predicate.js +0 -1235
  286. package/esm2015/src/primitive-array.js +0 -87
  287. package/esm2015/src/query-options.js +0 -152
  288. package/esm2015/src/relation-array.js +0 -175
  289. package/esm2015/src/save-options.js +0 -41
  290. package/esm2015/src/unattached-children-map.js +0 -58
  291. package/esm2015/src/validate.js +0 -991
  292. package/esm2015/src/validation-options.js +0 -64
  293. package/esm5/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -132
  294. package/esm5/adapter-ajax-angularjs/adapter-core.js +0 -49
  295. package/esm5/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  296. package/esm5/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -132
  297. package/esm5/adapter-ajax-fetch/adapter-core.js +0 -49
  298. package/esm5/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  299. package/esm5/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -139
  300. package/esm5/adapter-ajax-httpclient/adapter-core.js +0 -49
  301. package/esm5/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  302. package/esm5/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -105
  303. package/esm5/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  304. package/esm5/adapter-ajax-post/adapter-ajax-post.js +0 -81
  305. package/esm5/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  306. package/esm5/adapter-data-service-odata/adapter-core.js +0 -49
  307. package/esm5/adapter-data-service-odata/adapter-data-service-odata.js +0 -466
  308. package/esm5/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  309. package/esm5/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -98
  310. package/esm5/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  311. package/esm5/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -270
  312. package/esm5/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  313. package/esm5/adapter-model-library-ko/adapter-model-library-ko.js +0 -242
  314. package/esm5/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  315. package/esm5/adapter-uri-builder-json/adapter-core.js +0 -49
  316. package/esm5/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -38
  317. package/esm5/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  318. package/esm5/adapter-uri-builder-odata/adapter-core.js +0 -49
  319. package/esm5/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -197
  320. package/esm5/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  321. package/esm5/breeze-client.js +0 -9
  322. package/esm5/index.js +0 -2
  323. package/esm5/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  324. package/esm5/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  325. package/esm5/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  326. package/esm5/mixin-save-queuing/mixin-save-queuing.js +0 -412
  327. package/esm5/public_api.js +0 -2
  328. package/esm5/src/abstract-data-service-adapter.js +0 -302
  329. package/esm5/src/array.js +0 -4
  330. package/esm5/src/assert-param.js +0 -317
  331. package/esm5/src/breeze.js +0 -85
  332. package/esm5/src/complex-array.js +0 -119
  333. package/esm5/src/config.js +0 -228
  334. package/esm5/src/core.js +0 -714
  335. package/esm5/src/csdl-metadata-parser.js +0 -385
  336. package/esm5/src/data-service.js +0 -207
  337. package/esm5/src/data-type.js +0 -451
  338. package/esm5/src/default-property-interceptor.js +0 -459
  339. package/esm5/src/entity-action.js +0 -52
  340. package/esm5/src/entity-aspect.js +0 -812
  341. package/esm5/src/entity-group.js +0 -189
  342. package/esm5/src/entity-key.js +0 -118
  343. package/esm5/src/entity-manager.js +0 -2112
  344. package/esm5/src/entity-metadata.js +0 -2144
  345. package/esm5/src/entity-query.js +0 -1023
  346. package/esm5/src/entity-state.js +0 -106
  347. package/esm5/src/enum.js +0 -144
  348. package/esm5/src/event.js +0 -259
  349. package/esm5/src/interface-registry.js +0 -43
  350. package/esm5/src/key-generator.js +0 -111
  351. package/esm5/src/local-query-comparison-options.js +0 -67
  352. package/esm5/src/mapping-context.js +0 -407
  353. package/esm5/src/naming-convention.js +0 -90
  354. package/esm5/src/observable-array.js +0 -201
  355. package/esm5/src/predicate.js +0 -1300
  356. package/esm5/src/primitive-array.js +0 -87
  357. package/esm5/src/query-options.js +0 -167
  358. package/esm5/src/relation-array.js +0 -175
  359. package/esm5/src/save-options.js +0 -43
  360. package/esm5/src/unattached-children-map.js +0 -60
  361. package/esm5/src/validate.js +0 -996
  362. package/esm5/src/validation-options.js +0 -66
  363. package/fesm2015/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  364. package/fesm2015/breeze-client-adapter-ajax-fetch.js.map +0 -1
  365. package/fesm2015/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  366. package/fesm2015/breeze-client-adapter-ajax-jquery.js.map +0 -1
  367. package/fesm2015/breeze-client-adapter-ajax-post.js.map +0 -1
  368. package/fesm2015/breeze-client-adapter-data-service-odata.js.map +0 -1
  369. package/fesm2015/breeze-client-adapter-data-service-webapi.js.map +0 -1
  370. package/fesm2015/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  371. package/fesm2015/breeze-client-adapter-model-library-ko.js.map +0 -1
  372. package/fesm2015/breeze-client-adapter-uri-builder-json.js.map +0 -1
  373. package/fesm2015/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  374. package/fesm2015/breeze-client-mixin-get-entity-graph.js.map +0 -1
  375. package/fesm2015/breeze-client-mixin-save-queuing.js.map +0 -1
  376. package/fesm2015/breeze-client.js.map +0 -1
  377. package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  378. package/fesm5/breeze-client-adapter-ajax-fetch.js.map +0 -1
  379. package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  380. package/fesm5/breeze-client-adapter-ajax-jquery.js.map +0 -1
  381. package/fesm5/breeze-client-adapter-ajax-post.js.map +0 -1
  382. package/fesm5/breeze-client-adapter-data-service-odata.js.map +0 -1
  383. package/fesm5/breeze-client-adapter-data-service-webapi.js.map +0 -1
  384. package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  385. package/fesm5/breeze-client-adapter-model-library-ko.js.map +0 -1
  386. package/fesm5/breeze-client-adapter-uri-builder-json.js +0 -92
  387. package/fesm5/breeze-client-adapter-uri-builder-json.js.map +0 -1
  388. package/fesm5/breeze-client-adapter-uri-builder-odata.js +0 -250
  389. package/fesm5/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  390. package/fesm5/breeze-client-mixin-get-entity-graph.js.map +0 -1
  391. package/fesm5/breeze-client-mixin-save-queuing.js.map +0 -1
  392. package/fesm5/breeze-client.js.map +0 -1
  393. package/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.metadata.json +0 -1
  394. package/mixin-get-entity-graph/package.json +0 -13
  395. package/mixin-save-queuing/breeze-client-mixin-save-queuing.metadata.json +0 -1
  396. package/mixin-save-queuing/package.json +0 -13
  397. package/public_api.d.ts +0 -1
@@ -1,451 +0,0 @@
1
- import { __extends } from "tslib";
2
- import { core } from './core';
3
- import { BreezeEnum } from './enum';
4
- import { Validator } from './validate';
5
- var _localTimeRegex = /.\d{3}$/;
6
- /**
7
- DataType is an 'Enum' containing all of the supported data types.
8
- @dynamic
9
- **/
10
- var DataType = /** @class */ (function (_super) {
11
- __extends(DataType, _super);
12
- function DataType() {
13
- return _super !== null && _super.apply(this, arguments) || this;
14
- }
15
- DataType.getComparableFn = function (dataType) {
16
- if (dataType && dataType.normalize) {
17
- return dataType.normalize;
18
- }
19
- else if (dataType === DataType.Time) {
20
- // durations must be converted to compare them
21
- return function (value) {
22
- return value && core.durationToSeconds(value);
23
- };
24
- }
25
- else {
26
- // TODO: __identity
27
- return function (value) {
28
- return value;
29
- };
30
- }
31
- };
32
- /** Returns the DataType for a specified EDM type name.
33
- **/
34
- DataType.fromEdmDataType = function (typeName) {
35
- var dt;
36
- var parts = typeName.split(".");
37
- if (parts.length > 1) {
38
- var simpleName = parts[1];
39
- if (simpleName === "image") {
40
- // hack
41
- dt = DataType.Byte;
42
- }
43
- else if (parts.length === 2) {
44
- dt = DataType.fromName(simpleName) || DataType.Undefined;
45
- }
46
- else {
47
- // enum
48
- // dt = DataType.Int32;
49
- dt = DataType.String;
50
- }
51
- }
52
- return dt;
53
- };
54
- /** Returns the DataType for a specified input. */
55
- DataType.fromValue = function (val) {
56
- if (core.isDate(val))
57
- return DataType.DateTime;
58
- switch (typeof val) {
59
- case "string":
60
- if (core.isGuid(val))
61
- return DataType.Guid;
62
- // the >3 below is a hack to insure that if we are inferring datatypes that
63
- // very short strings that are valid but unlikely ISO encoded Time's are treated as strings instead.
64
- else if (core.isDuration(val) && val.length > 3)
65
- return DataType.Time;
66
- else if (core.isDateString(val))
67
- return DataType.DateTime;
68
- return DataType.String;
69
- case "boolean":
70
- return DataType.Boolean;
71
- case "number":
72
- return DataType.Double;
73
- }
74
- return DataType.Undefined;
75
- };
76
- DataType.parseTimeFromServer = function (source) {
77
- if (typeof source === 'string') {
78
- return source;
79
- }
80
- // ODATA v3 format
81
- if (source && source.__edmType === 'Edm.Time') {
82
- var seconds = Math.floor(source.ms / 1000);
83
- return 'PT' + seconds + 'S';
84
- }
85
- return source;
86
- };
87
- DataType.parseDateAsUTC = function (source) {
88
- if (typeof source === 'string') {
89
- // convert to UTC string if no time zone specifier.
90
- var isLocalTime = _localTimeRegex.test(source);
91
- // var isLocalTime = !hasTimeZone(source);
92
- source = isLocalTime ? source + 'Z' : source;
93
- }
94
- source = new Date(Date.parse(source));
95
- return source;
96
- };
97
- /** Returns a raw value converted to the specified DataType */
98
- DataType.parseRawValue = function (val, dataType) {
99
- // undefined values will be the default for most unmapped properties EXCEPT when they are set
100
- // in a jsonResultsAdapter ( an unusual use case).
101
- if (val === undefined)
102
- return undefined;
103
- if (!val)
104
- return val;
105
- if (dataType && dataType.parseRawValue) {
106
- val = dataType.parseRawValue(val);
107
- }
108
- return val;
109
- };
110
- /** @hidden @internal */
111
- // used during initialization; visible on instance for testing purposes.
112
- DataType._resetConstants = function () {
113
- DataType.constants = {
114
- stringPrefix: "K_",
115
- nextNumber: -1,
116
- nextNumberIncrement: -1
117
- };
118
- };
119
- DataType.parseDateFromServer = function (value) { return DataType.parseDateAsUTC(value); };
120
- DataType.String = new DataType({
121
- defaultValue: "",
122
- parse: coerceToString,
123
- fmtOData: fmtString,
124
- getNext: getNextString
125
- });
126
- DataType.Int64 = new DataType({
127
- defaultValue: 0,
128
- isNumeric: true,
129
- isInteger: true,
130
- quoteJsonOData: true,
131
- parse: coerceToInt,
132
- fmtOData: makeFloatFmt("L"),
133
- getNext: getNextNumber
134
- });
135
- DataType.Int32 = new DataType({
136
- defaultValue: 0,
137
- isNumeric: true,
138
- isInteger: true,
139
- parse: coerceToInt,
140
- fmtOData: fmtInt,
141
- getNext: getNextNumber
142
- });
143
- DataType.Int16 = new DataType({
144
- defaultValue: 0,
145
- isNumeric: true,
146
- isInteger: true,
147
- parse: coerceToInt,
148
- fmtOData: fmtInt,
149
- getNext: getNextNumber
150
- });
151
- DataType.Byte = new DataType({
152
- defaultValue: 0,
153
- isNumeric: true,
154
- isInteger: true,
155
- parse: coerceToInt,
156
- fmtOData: fmtInt
157
- });
158
- DataType.Decimal = new DataType({
159
- defaultValue: 0,
160
- isNumeric: true,
161
- quoteJsonOData: true,
162
- isFloat: true,
163
- parse: coerceToFloat,
164
- fmtOData: makeFloatFmt("m"),
165
- getNext: getNextNumber
166
- });
167
- DataType.Double = new DataType({
168
- defaultValue: 0,
169
- isNumeric: true,
170
- isFloat: true,
171
- parse: coerceToFloat,
172
- fmtOData: makeFloatFmt("d"),
173
- getNext: getNextNumber
174
- });
175
- DataType.Single = new DataType({
176
- defaultValue: 0,
177
- isNumeric: true,
178
- isFloat: true,
179
- parse: coerceToFloat,
180
- fmtOData: makeFloatFmt("f"),
181
- getNext: getNextNumber
182
- });
183
- DataType.DateTime = new DataType({
184
- defaultValue: new Date(1900, 0, 1),
185
- isDate: true,
186
- parse: coerceToDate,
187
- parseRawValue: parseRawDate,
188
- normalize: function (value) { return value && value.getTime && value.getTime(); },
189
- fmtOData: fmtDateTime,
190
- getNext: getNextDateTime,
191
- getConcurrencyValue: getConcurrencyDateTime
192
- });
193
- DataType.DateTimeOffset = new DataType({
194
- defaultValue: new Date(1900, 0, 1),
195
- isDate: true,
196
- parse: coerceToDate,
197
- parseRawValue: parseRawDate,
198
- normalize: function (value) { return value && value.getTime && value.getTime(); },
199
- fmtOData: fmtDateTimeOffset,
200
- getNext: getNextDateTime,
201
- getConcurrencyValue: getConcurrencyDateTime
202
- });
203
- DataType.Time = new DataType({
204
- defaultValue: "PT0S",
205
- fmtOData: fmtTime,
206
- parseRawValue: DataType.parseTimeFromServer
207
- });
208
- DataType.Boolean = new DataType({
209
- defaultValue: false,
210
- parse: coerceToBool,
211
- fmtOData: fmtBoolean
212
- });
213
- DataType.Guid = new DataType({
214
- defaultValue: "00000000-0000-0000-0000-000000000000",
215
- parse: coerceToGuid,
216
- fmtOData: fmtGuid,
217
- getNext: getNextGuid,
218
- parseRawValue: function (val) { return val.toLowerCase(); },
219
- getConcurrencyValue: core.getUuid
220
- });
221
- DataType.Binary = new DataType({
222
- defaultValue: null,
223
- fmtOData: fmtBinary,
224
- parseRawValue: parseRawBinary
225
- });
226
- DataType.Undefined = new DataType({
227
- defaultValue: undefined,
228
- fmtOData: fmtUndefined
229
- });
230
- return DataType;
231
- }(BreezeEnum));
232
- export { DataType };
233
- DataType.prototype._$typeName = "DataType";
234
- Error['x'] = DataType._resetConstants();
235
- Error['x'] = DataType.resolveSymbols();
236
- Error['x'] = DataType.getSymbols().forEach(function (sym) { return sym.validatorCtor = getValidatorCtor(sym); });
237
- // private functions;
238
- function getValidatorCtor(dataType) {
239
- switch (dataType) {
240
- case DataType.String:
241
- return Validator.string;
242
- case DataType.Int64:
243
- return Validator.int64;
244
- case DataType.Int32:
245
- return Validator.int32;
246
- case DataType.Int16:
247
- return Validator.int16;
248
- case DataType.Decimal:
249
- return Validator.number;
250
- case DataType.Double:
251
- return Validator.number;
252
- case DataType.Single:
253
- return Validator.number;
254
- case DataType.DateTime:
255
- return Validator.date;
256
- case DataType.DateTimeOffset:
257
- return Validator.date;
258
- case DataType.Boolean:
259
- return Validator.bool;
260
- case DataType.Guid:
261
- return Validator.guid;
262
- case DataType.Byte:
263
- return Validator.byte;
264
- case DataType.Binary:
265
- // TODO: don't quite know how to validate this yet.
266
- return Validator.none;
267
- case DataType.Time:
268
- return Validator.duration;
269
- case DataType.Undefined:
270
- return Validator.none;
271
- }
272
- }
273
- function getNextString() {
274
- return DataType.constants.stringPrefix + getNextNumber().toString();
275
- }
276
- function getNextNumber() {
277
- var result = DataType.constants.nextNumber;
278
- DataType.constants.nextNumber += DataType.constants.nextNumberIncrement;
279
- return result;
280
- }
281
- function getNextGuid() {
282
- return core.getUuid();
283
- }
284
- function getNextDateTime() {
285
- return new Date();
286
- }
287
- function getConcurrencyDateTime(val) {
288
- // use the current datetime but insure that it is different from previous call.
289
- var dt = new Date();
290
- var dt2 = new Date();
291
- while (dt.getTime() === dt2.getTime()) {
292
- dt2 = new Date();
293
- }
294
- return dt2;
295
- }
296
- function coerceToString(source, sourceTypeName) {
297
- return (source == null) ? source : source.toString();
298
- }
299
- function coerceToGuid(source, sourceTypeName) {
300
- if (sourceTypeName === "string") {
301
- return source.trim().toLowerCase();
302
- }
303
- return source;
304
- }
305
- function coerceToInt(source, sourceTypeName) {
306
- if (sourceTypeName === "string") {
307
- var src = source.trim();
308
- if (src === "")
309
- return null;
310
- var val = parseInt(src, 10);
311
- return isNaN(val) ? source : val;
312
- }
313
- else if (sourceTypeName === "number") {
314
- return Math.round(source);
315
- }
316
- // do we want to coerce floats -> ints
317
- return source;
318
- }
319
- function coerceToFloat(source, sourceTypeName) {
320
- if (sourceTypeName === "string") {
321
- var src = source.trim();
322
- if (src === "")
323
- return null;
324
- var val = parseFloat(src);
325
- return isNaN(val) ? source : val;
326
- }
327
- return source;
328
- }
329
- function coerceToDate(source, sourceTypeName) {
330
- var val;
331
- if (sourceTypeName === "string") {
332
- var src = source.trim();
333
- if (src === "")
334
- return null;
335
- val = new Date(Date.parse(src));
336
- return core.isDate(val) ? val : source;
337
- }
338
- else if (sourceTypeName === "number") {
339
- val = new Date(source);
340
- return core.isDate(val) ? val : source;
341
- }
342
- return source;
343
- }
344
- function coerceToBool(source, sourceTypeName) {
345
- if (sourceTypeName === "string") {
346
- var src = source.trim().toLowerCase();
347
- if (src === "false" || src === "") {
348
- return false;
349
- }
350
- else if (src === "true") {
351
- return true;
352
- }
353
- else {
354
- return source;
355
- }
356
- }
357
- return source;
358
- }
359
- function fmtString(val) {
360
- return val == null ? null : "'" + val.replace(/'/g, "''") + "'";
361
- }
362
- function fmtInt(val) {
363
- return val == null ? null : ((typeof val === "string") ? parseInt(val, 10) : val);
364
- }
365
- function makeFloatFmt(fmtSuffix) {
366
- return function (val) {
367
- if (val == null)
368
- return null;
369
- if (typeof val === "string") {
370
- val = parseFloat(val);
371
- }
372
- return val + fmtSuffix;
373
- };
374
- }
375
- function fmtDateTime(val) {
376
- if (val == null)
377
- return null;
378
- try {
379
- return "datetime'" + val.toISOString() + "'";
380
- }
381
- catch (e) {
382
- throwError("'%1' is not a valid dateTime", val);
383
- }
384
- }
385
- function fmtDateTimeOffset(val) {
386
- if (val == null)
387
- return null;
388
- try {
389
- return "datetimeoffset'" + val.toISOString() + "'";
390
- }
391
- catch (e) {
392
- throwError("'%1' is not a valid dateTime", val);
393
- }
394
- }
395
- function fmtTime(val) {
396
- if (val == null)
397
- return null;
398
- if (!core.isDuration(val)) {
399
- throwError("'%1' is not a valid ISO 8601 duration", val);
400
- }
401
- return "time'" + val + "'";
402
- }
403
- function fmtGuid(val) {
404
- if (val == null)
405
- return null;
406
- if (!core.isGuid(val)) {
407
- throwError("'%1' is not a valid guid", val);
408
- }
409
- return "guid'" + val + "'";
410
- }
411
- function fmtBoolean(val) {
412
- if (val == null)
413
- return null;
414
- if (typeof val === "string") {
415
- return val.trim().toLowerCase() === "true";
416
- }
417
- else {
418
- return !!val;
419
- }
420
- }
421
- function fmtBinary(val) {
422
- if (val == null)
423
- return val;
424
- return "binary'" + val + "'";
425
- }
426
- // TODO: use __identity instead;
427
- function fmtUndefined(val) {
428
- return val;
429
- }
430
- function throwError(msg, val) {
431
- msg = core.formatString(msg, val);
432
- throw new Error(msg);
433
- }
434
- function parseRawDate(val) {
435
- if (!core.isDate(val)) {
436
- val = DataType.parseDateFromServer(val);
437
- }
438
- return val;
439
- }
440
- function parseRawBinary(val) {
441
- if (val && val.$value !== undefined) {
442
- val = val.$value; // this will be a byte[] encoded as a string
443
- }
444
- return val;
445
- }
446
- //function hasTimeZone(source) {
447
- // var ix = source.indexOf("T");
448
- // var timePart = source.substring(ix+1);
449
- // return timePart.indexOf("-") >= 0 || timePart.indexOf("+") >= 0 || timePart.indexOf("Z");
450
- //}
451
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10eXBlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC8iLCJzb3VyY2VzIjpbInNyYy9kYXRhLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXZDLElBQUksZUFBZSxHQUFHLFNBQVMsQ0FBQztBQUVoQzs7O0dBR0c7QUFDSDtJQUE4Qiw0QkFBVTtJQUF4Qzs7SUFpU0EsQ0FBQztJQWpIUSx3QkFBZSxHQUF0QixVQUF1QixRQUFtQjtRQUN4QyxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsU0FBUyxFQUFFO1lBQ2xDLE9BQU8sUUFBUSxDQUFDLFNBQVMsQ0FBQztTQUMzQjthQUFNLElBQUksUUFBUSxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDckMsOENBQThDO1lBQzlDLE9BQU8sVUFBVSxLQUFVO2dCQUN6QixPQUFPLEtBQUssSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDO1NBQ0g7YUFBTTtZQUNMLG1CQUFtQjtZQUNuQixPQUFPLFVBQVUsS0FBVTtnQkFDekIsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRDtPQUNHO0lBQ0ksd0JBQWUsR0FBdEIsVUFBdUIsUUFBZ0I7UUFDckMsSUFBSSxFQUF3QixDQUFDO1FBQzdCLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNwQixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsSUFBSSxVQUFVLEtB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ckIsR0FBRyxHQUFHLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUN6QztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLEdBQVE7SUFDOUIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7UUFDbkMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyw0Q0FBNEM7S0FDL0Q7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxnQ0FBZ0M7QUFDaEMsaUNBQWlDO0FBQ2pDLDBDQUEwQztBQUMxQyw4RkFBOEY7QUFDOUYsR0FBRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvcmUgfSBmcm9tICcuL2NvcmUnO1xyXG5pbXBvcnQgeyBCcmVlemVFbnVtIH0gZnJvbSAnLi9lbnVtJztcclxuaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSAnLi92YWxpZGF0ZSc7XHJcblxyXG5sZXQgX2xvY2FsVGltZVJlZ2V4ID0gLy5cXGR7M30kLztcclxuXHJcbi8qKiAgXHJcbkRhdGFUeXBlIGlzIGFuICdFbnVtJyBjb250YWluaW5nIGFsbCBvZiB0aGUgc3VwcG9ydGVkIGRhdGEgdHlwZXMuXHJcbkBkeW5hbWljXHJcbioqL1xyXG5leHBvcnQgY2xhc3MgRGF0YVR5cGUgZXh0ZW5kcyBCcmVlemVFbnVtIHtcclxuICAvKiogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyBEYXRhVHlwZS4gX19SZWFkIE9ubHlfXyAqKi9cclxuICBkZWZhdWx0VmFsdWU/OiBhbnk7XHJcbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBhICdudW1lcmljJyBEYXRhVHlwZS4gX19SZWFkIE9ubHlfXyAqKi9cclxuICBpc051bWVyaWM/OiBib29sZWFuO1xyXG4gIC8qKiBXaGV0aGVyIHRoaXMgaXMgYW4gJ2ludGVnZXInIERhdGFUeXBlLiBfX1JlYWQgT25seV9fICoqL1xyXG4gIGlzSW50ZWdlcj86IGJvb2xlYW47XHJcbiAgLyoqIFdoZXRoZXIgdG8gcXVvdGUgdGhlIGpzb24gdmFsdWUgd2hlbiBmb3JtYXR0aW5nIHRoaXMgRGF0YVR5cGUgZm9yIE9EYXRhLiAqL1xyXG4gIHF1b3RlSnNvbk9EYXRhPzogYm9vbGVhbjtcclxuICAvKiogVGhlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIFtbVmFsaWRhdG9yXV0gdG8gYmUgdXNlZCBpbiB2YWxpZGF0aW5nIGluc3RhbmNlcyBvZiB0aGlzIERhdGFUeXBlLiAqL1xyXG4gIHZhbGlkYXRvckN0b3I/KGNvbnRleHQ/OiBhbnkpOiBWYWxpZGF0b3I7XHJcbiAgLyoqIFxyXG4gIE9wdGlvbmFsIGZ1bmN0aW9uIHRvIG5vcm1hbGl6ZSBhIGRhdGEgdmFsdWUgZm9yIGNvbXBhcmlzb24sIGlmIGl0cyB2YWx1ZSBjYW5ub3QgYmUgdXNlZCBkaXJlY3RseS4gXHJcbiAgTm90ZSB0aGF0IHRoaXMgd2lsbCBiZSBjYWxsZWQgZWFjaCB0aW1lIGEgcHJvcGVydHkgaXMgY2hhbmdlZCwgc28gbWFrZSBpdCBmYXN0LlxyXG4gIEByZXR1cm4gdmFsdWUgYXBwcm9wcmlhdGUgZm9yIHRoaXMgRGF0YVR5cGVcclxuICAqKi9cclxuICBub3JtYWxpemU/KHZhbHVlOiBhbnkpOiBhbnk7XHJcbiAgLyoqXHJcbiAgT3B0aW9uYWwgZnVuY3Rpb24gdG8gY29udmVydCBhIHJhdyAoc2VydmVyKSB2YWx1ZSBmcm9tIHN0cmluZyB0byB0aGlzIERhdGFUeXBlLlxyXG4gIEByZXR1cm4gdmFsdWUgYXBwcm9wcmlhdGUgZm9yIHRoaXMgRGF0YVR5cGVcclxuICAqKi9cclxuICBwYXJzZVJhd1ZhbHVlPyh2YWx1ZTogYW55KTogYW55O1xyXG4gIC8qKlxyXG4gIE9wdGlvbmFsIGZ1bmN0aW9uIHRvIGNvbnZlcnQgYSB2YWx1ZSBmcm9tIHN0cmluZyB0byB0aGlzIERhdGFUeXBlLiAgTm90ZSB0aGF0IHRoaXMgd2lsbCBiZSBjYWxsZWQgZWFjaCB0aW1lIGEgcHJvcGVydHkgaXMgY2hhbmdlZCwgc28gbWFrZSBpdCBmYXN0LlxyXG4gIEByZXR1cm4gdmFsdWUgYXBwcm9wcmlhdGUgZm9yIHRoaXMgRGF0YVR5cGUgXHJcbiAgKiovXHJcbiAgcGFyc2U/KHNvdXJjZTogYW55LCBzb3VyY2VUeXBlTmFtZTogc3RyaW5nKTogYW55O1xyXG4gIC8qKiBcclxuICBPcHRpb25hbCBmdW5jdGlvbiB0byBmb3JtYXQgdGhpcyBEYXRhVHlwZSBmb3IgT0RhdGEgcXVlcmllcy5cclxuICBAcmV0dXJuIHZhbHVlIGFwcHJvcHJpYXRlIGZvciBPRGF0YSBxdWVyeSAgIFxyXG4gICoqL1xyXG4gIGZtdE9EYXRhPyh2YWx1ZTogYW55KTogYW55O1xyXG4gIC8qKiBcclxuICBPcHRpb25hbCBmdW5jdGlvbiB0byBnZXQgdGhlIG5leHQgdmFsdWUgZm9yIGtleSBnZW5lcmF0aW9uLCBpZiB0aGlzIGRhdGF0eXBlIGlzIHVzZWQgYXMgYSBrZXkuICBVc2VzIGFuIGludGVybmFsIHRhYmxlIG9mIHByZXZpb3VzIHZhbHVlcy5cclxuICBAcmV0dXJuIHZhbHVlIGFwcHJvcHJpYXRlIGZvciB0aGlzIERhdGFUeXBlIFxyXG4gICoqL1xyXG4gIGdldE5leHQ/KCk6IGFueTtcclxuICAvKipcclxuICBPcHRpb25hbCBmdW5jdGlvbiB0byBnZXQgdGhlIG5leHQgdmFsdWUgd2hlbiB0aGUgZGF0YXR5cGUgaXMgdXNlZCBhcyBhIGNvbmN1cnJlbmN5IHByb3BlcnR5LlxyXG4gIEBwYXJhbSBwcmV2aW91c1ZhbHVlXHJcbiAgQHJldHVybiB0aGUgbmV4dCBjb25jdXJyZW5jeSB2YWx1ZSwgd2hpY2ggbWF5IGJlIGEgZnVuY3Rpb24gb2YgdGhlIHByZXZpb3VzVmFsdWUuXHJcbiAgKiovXHJcbiAgZ2V0Q29uY3VycmVuY3lWYWx1ZT8ocHJldmlvdXNWYWx1ZT86IGFueSk6IGFueTtcclxuXHJcbiAgc3RhdGljIHBhcnNlRGF0ZUZyb21TZXJ2ZXIgPSAodmFsdWU6IGFueSkgPT4gRGF0YVR5cGUucGFyc2VEYXRlQXNVVEModmFsdWUpO1xyXG4gIC8vIHNhbWUgZWZmZWN0IGFzIGFib3ZlIGJ1dCBkb2Vzbid0IGdpdmUgcmlnaHQgVFNET0MuXHJcbiAgLy8gc3RhdGljIHBhcnNlRGF0ZUZyb21TZXJ2ZXIgPSBEYXRhVHlwZS5wYXJzZURhdGVBc1VUQztcclxuXHJcbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbiAgc3RhdGljIGNvbnN0YW50czogeyBzdHJpbmdQcmVmaXg6IHN0cmluZywgbmV4dE51bWJlcjogbnVtYmVyLCBuZXh0TnVtYmVySW5jcmVtZW50OiBudW1iZXIgfTtcclxuXHJcbiAgc3RhdGljIFN0cmluZyA9IG5ldyBEYXRhVHlwZSh7XHJcbiAgICBkZWZhdWx0VmFsdWU6IFwiXCIsXHJcbiAgICBwYXJzZTogY29lcmNlVG9TdHJpbmcsXHJcbiAgICBmbXRPRGF0YTogZm10U3RyaW5nLFxyXG4gICAgZ2V0TmV4dDogZ2V0TmV4dFN0cmluZ1xyXG4gIH0pO1xyXG5cclxuICBzdGF0aWMgSW50NjQgPSBuZXcgRGF0YVR5cGUoe1xyXG4gICAgZGVmYXVsdFZhbHVlOiAwLFxyXG4gICAgaXNOdW1lcmljOiB0cnVlLFxyXG4gICAgaXNJbnRlZ2VyOiB0cnVlLFxyXG4gICAgcXVvdGVKc29uT0RhdGE6IHRydWUsXHJcbiAgICBwYXJzZTogY29lcmNlVG9JbnQsXHJcbiAgICBmbXRPRGF0YTogbWFrZUZsb2F0Rm10KFwiTFwiKSxcclxuICAgIGdldE5leHQ6IGdldE5leHROdW1iZXJcclxuICB9KTtcclxuXHJcbiAgc3RhdGljIEludDMyID0gbmV3IERhdGFUeXBlKHtcclxuICAgIGRlZmF1bHRWYWx1ZTogMCxcclxuICAgIGlzTnVtZXJpYzogdHJ1ZSxcclxuICAgIGlzSW50ZWdlcjogdHJ1ZSxcclxuICAgIHBhcnNlOiBjb2VyY2VUb0ludCxcclxuICAgIGZtdE9EYXRhOiBmbXRJbnQsXHJcbiAgICBnZXROZXh0OiBnZXROZXh0TnVtYmVyXHJcbiAgfSk7XHJcblxyXG4gIHN0YXRpYyBJbnQxNiA9IG5ldyBEYXRhVHlwZSh7XHJcbiAgICBkZWZhdWx0VmFsdWU6IDAsXHJcbiAgICBpc051bWVyaWM6IHRydWUsXHJcbiAgICBpc0ludGVnZXI6IHRydWUsXHJcbiAgICBwYXJzZTogY29lcmNlVG9JbnQsXHJcbiAgICBmbXRPRGF0YTogZm10SW50LFxyXG4gICAgZ2V0TmV4dDogZ2V0TmV4dE51bWJlclxyXG4gIH0pO1xyXG5cclxuICBzdGF0aWMgQnl0ZSA9IG5ldyBEYXRhVHlwZSh7XHJcbiAgICBkZWZhdWx0VmFsdWU6IDAsXHJcbiAgICBpc051bWVyaWM6IHRydWUsXHJcbiAgICBpc0ludGVnZXI6IHRydWUsXHJcbiAgICBwYXJzZTogY29lcmNlVG9JbnQsXHJcbiAgICBmbXRPRGF0YTogZm10SW50XHJcbiAgfSk7XHJcblxyXG4gIHN0YXRpYyBEZWNpbWFsID0gbmV3IERhdGFUeXBlKHtcclxuICAgIGRlZmF1bHRWYWx1ZTogMCxcclxuICAgIGlzTnVtZXJpYzogdHJ1ZSxcclxuICAgIHF1b3RlSnNvbk9EYXRhOiB0cnVlLFxyXG4gICAgaXNGbG9hdDogdHJ1ZSxcclxuICAgIHBhcnNlOiBjb2VyY2VUb0Zsb2F0LFxyXG4gICAgZm10T0RhdGE6IG1ha2VGbG9hdEZtdChcIm1cIiksXHJcbiAgICBnZXROZXh0OiBnZXROZXh0TnVtYmVyXHJcbiAgfSk7XHJcblxyXG4gIHN0YXRpYyBEb3VibGUgPSBuZXcgRGF0YVR5cGUoe1xyXG4gICAgZGVmYXVsdFZhbHVlOiAwLFxyXG4gICAgaXNOdW1lcmljOiB0cnVlLFxyXG4gICAgaXNGbG9hdDogdHJ1ZSxcclxuICAgIHBhcnNlOiBjb2VyY2VUb0Zsb2F0LFxyXG4gICAgZm10T0RhdGE6IG1ha2VGbG9hdEZtdChcImRcIiksXHJcbiAgICBnZXROZXh0OiBnZXROZXh0TnVtYmVyXHJcbiAgfSk7XHJcblxyXG4gIHN0YXRpYyBTaW5nbGUgPSBuZXcgRGF0YVR5cGUoe1xyXG4gICAgZGVmYXVsdFZhbHVlOiAwLFxyXG4gICAgaXNOdW1lcmljOiB0cnVlLFxyXG4gICAgaXNGbG9hdDogdHJ1ZSxcclxuICAgIHBhcnNlOiBjb2VyY2VUb0Zsb2F0LFxyXG4gICAgZm10T0RhdGE6IG1ha2VGbG9hdEZtdChcImZcIiksXHJcbiAgICBnZXROZXh0OiBnZXROZXh0TnVtYmVyXHJcbiAgfSk7XHJcblxyXG4gIHN0YXRpYyBEYXRlVGltZSA9IG5ldyBEYXRhVHlwZSh7XHJcbiAgICBkZWZhdWx0VmFsdWU6IG5ldyBEYXRlKDE5MDAsIDAsIDEpLFxyXG4gICAgaXNEYXRlOiB0cnVlLFxyXG4gICAgcGFyc2U6IGNvZXJjZVRvRGF0ZSxcclxuICAgIHBhcnNlUmF3VmFsdWU6IHBhcnNlUmF3RGF0ZSxcclxuICAgIG5vcm1hbGl6ZTogZnVuY3Rpb24gKHZhbHVlOiBhbnkpIHsgcmV0dXJuIHZhbHVlICYmIHZhbHVlLmdldFRpbWUgJiYgdmFsdWUuZ2V0VGltZSgpOyB9LCAvLyBkYXRlcyBkb24ndCBwZXJmb3JtIGVxdWFsaXR5IGNvbXBhcmlzb25zIHByb3Blcmx5XHJcbiAgICBmbXRPRGF0YTogZm10RGF0ZVRpbWUsXHJcbiAgICBnZXROZXh0OiBnZXROZXh0RGF0ZVRpbWUsXHJcbiAgICBnZXRDb25jdXJyZW5jeVZhbHVlOiBnZXRDb25jdXJyZW5jeURhdGVUaW1lXHJcbiAgfSk7XHJcblxyXG4gIHN0YXRpYyBEYXRlVGltZU9mZnNldCA9IG5ldyBEYXRhVHlwZSh7XHJcbiAgICBkZWZhdWx0VmFsdWU6IG5ldyBEYXRlKDE5MDAsIDAsIDEpLFxyXG4gICAgaXNEYXRlOiB0cnVlLFxyXG4gICAgcGFyc2U6IGNvZXJjZVRvRGF0ZSxcclxuICAgIHBhcnNlUmF3VmFsdWU6IHBhcnNlUmF3RGF0ZSxcclxuICAgIG5vcm1hbGl6ZTogZnVuY3Rpb24gKHZhbHVlOiBhbnkpIHsgcmV0dXJuIHZhbHVlICYmIHZhbHVlLmdldFRpbWUgJiYgdmFsdWUuZ2V0VGltZSgpOyB9LCAvLyBkYXRlcyBkb24ndCBwZXJmb3JtIGVxdWFsaXR5IGNvbXBhcmlzb25zIHByb3Blcmx5XHJcbiAgICBmbXRPRGF0YTogZm10RGF0ZVRpbWVPZmZzZXQsXHJcbiAgICBnZXROZXh0OiBnZXROZXh0RGF0ZVRpbWUsXHJcbiAgICBnZXRDb25jdXJyZW5jeVZhbHVlOiBnZXRDb25jdXJyZW5jeURhdGVUaW1lXHJcbiAgfSk7XHJcblxyXG4gIHN0YXRpYyBUaW1lID0gbmV3IERhdGFUeXBlKHtcclxuICAgIGRlZmF1bHRWYWx1ZTogXCJQVDBTXCIsXHJcbiAgICBmbXRPRGF0YTogZm10VGltZSxcclxuICAgIHBhcnNlUmF3VmFsdWU6IERhdGFUeXBlLnBhcnNlVGltZUZyb21TZXJ2ZXJcclxuICB9KTtcclxuXHJcbiAgc3RhdGljIEJvb2xlYW4gPSBuZXcgRGF0YVR5cGUoe1xyXG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcclxuICAgIHBhcnNlOiBjb2VyY2VUb0Jvb2wsXHJcbiAgICBmbXRPRGF0YTogZm10Qm9vbGVhblxyXG4gIH0pO1xyXG5cclxuICBzdGF0aWMgR3VpZCA9IG5ldyBEYXRhVHlwZSh7XHJcbiAgICBkZWZhdWx0VmFsdWU6IFwiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXHJcbiAgICBwYXJzZTogY29lcmNlVG9HdWlkLFxyXG4gICAgZm10T0RhdGE6IGZtdEd1aWQsXHJcbiAgICBnZXROZXh0OiBnZXROZXh0R3VpZCxcclxuICAgIHBhcnNlUmF3VmFsdWU6IGZ1bmN0aW9uICh2YWw6IHN0cmluZykgeyByZXR1cm4gdmFsLnRvTG93ZXJDYXNlKCk7IH0sXHJcbiAgICBnZXRDb25jdXJyZW5jeVZhbHVlOiBjb3JlLmdldFV1aWRcclxuICB9KTtcclxuXHJcbiAgc3RhdGljIEJpbmFyeSA9IG5ldyBEYXRhVHlwZSh7XHJcbiAgICBkZWZhdWx0VmFsdWU6IG51bGwsXHJcbiAgICBmbXRPRGF0YTogZm10QmluYXJ5LFxyXG4gICAgcGFyc2VSYXdWYWx1ZTogcGFyc2VSYXdCaW5hcnlcclxuICB9KTtcclxuXHJcbiAgc3RhdGljIFVuZGVmaW5lZCA9IG5ldyBEYXRhVHlwZSh7XHJcbiAgICBkZWZhdWx0VmFsdWU6IHVuZGVmaW5lZCxcclxuICAgIGZtdE9EYXRhOiBmbXRVbmRlZmluZWRcclxuICB9KTtcclxuXHJcbiAgc3RhdGljIGdldENvbXBhcmFibGVGbihkYXRhVHlwZT86IERhdGFUeXBlKSB7XHJcbiAgICBpZiAoZGF0YVR5cGUgJiYgZGF0YVR5cGUubm9ybWFsaXplKSB7XHJcbiAgICAgIHJldHVybiBkYXRhVHlwZS5ub3JtYWxpemU7XHJcbiAgICB9IGVsc2UgaWYgKGRhdGFUeXBlID09PSBEYXRhVHlwZS5UaW1lKSB7XHJcbiAgICAgIC8vIGR1cmF0aW9ucyBtdXN0IGJlIGNvbnZlcnRlZCB0byBjb21wYXJlIHRoZW1cclxuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlICYmIGNvcmUuZHVyYXRpb25Ub1NlY29uZHModmFsdWUpO1xyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gVE9ETzogX19pZGVudGl0eVxyXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogUmV0dXJucyB0aGUgRGF0YVR5cGUgZm9yIGEgc3BlY2lmaWVkIEVETSB0eXBlIG5hbWUuXHJcbiAgKiovXHJcbiAgc3RhdGljIGZyb21FZG1EYXRhVHlwZSh0eXBlTmFtZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgZHQ6IERhdGFUeXBlIHwgdW5kZWZpbmVkO1xyXG4gICAgbGV0IHBhcnRzID0gdHlwZU5hbWUuc3BsaXQoXCIuXCIpO1xyXG4gICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgbGV0IHNpbXBsZU5hbWUgPSBwYXJ0c1sxXTtcclxuICAgICAgaWYgKHNpbXBsZU5hbWUgPT09IFwiaW1hZ2VcIikge1xyXG4gICAgICAgIC8vIGhhY2tcclxuICAgICAgICBkdCA9IERhdGFUeXBlLkJ5dGU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFydHMubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgICAgZHQgPSBEYXRhVHlwZS5mcm9tTmFtZShzaW1wbGVOYW1lKSB8fCBEYXRhVHlwZS5VbmRlZmluZWQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gZW51bVxyXG4gICAgICAgIC8vIGR0ID0gRGF0YVR5cGUuSW50MzI7XHJcbiAgICAgICAgZHQgPSBEYXRhVHlwZS5TdHJpbmc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZHQ7XHJcbiAgfVxyXG5cclxuICAvKiogUmV0dXJucyB0aGUgRGF0YVR5cGUgZm9yIGEgc3BlY2lmaWVkIGlucHV0LiAqL1xyXG4gIHN0YXRpYyBmcm9tVmFsdWUodmFsOiBhbnkpIHtcclxuICAgIGlmIChjb3JlLmlzRGF0ZSh2YWwpKSByZXR1cm4gRGF0YVR5cGUuRGF0ZVRpbWU7XHJcbiAgICBzd2l0Y2ggKHR5cGVvZiB2YWwpIHtcclxuICAgICAgY2FzZSBcInN0cmluZ1wiOlxyXG4gICAgICAgIGlmIChjb3JlLmlzR3VpZCh2YWwpKSByZXR1cm4gRGF0YVR5cGUuR3VpZDtcclxuICAgICAgICAvLyB0aGUgPjMgYmVsb3cgaXMgYSBoYWNrIHRvIGluc3VyZSB0aGF0IGlmIHdlIGFyZSBpbmZlcnJpbmcgZGF0YXR5cGVzIHRoYXRcclxuICAgICAgICAvLyB2ZXJ5IHNob3J0IHN0cmluZ3MgdGhhdCBhcmUgdmFsaWQgYnV0IHVubGlrZWx5IElTTyBlbmNvZGVkIFRpbWUncyBhcmUgdHJlYXRlZCBhcyBzdHJpbmdzIGluc3RlYWQuXHJcbiAgICAgICAgZWxzZSBpZiAoY29yZS5pc0R1cmF0aW9uKHZhbCkgJiYgdmFsLmxlbmd0aCA+IDMpIHJldHVybiBEYXRhVHlwZS5UaW1lO1xyXG4gICAgICAgIGVsc2UgaWYgKGNvcmUuaXNEYXRlU3RyaW5nKHZhbCkpIHJldHVybiBEYXRhVHlwZS5EYXRlVGltZTtcclxuICAgICAgICByZXR1cm4gRGF0YVR5cGUuU3RyaW5nO1xyXG4gICAgICBjYXNlIFwiYm9vbGVhblwiOlxyXG4gICAgICAgIHJldHVybiBEYXRhVHlwZS5Cb29sZWFuO1xyXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XHJcbiAgICAgICAgcmV0dXJuIERhdGFUeXBlLkRvdWJsZTtcclxuICAgIH1cclxuICAgIHJldHVybiBEYXRhVHlwZS5VbmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcGFyc2VUaW1lRnJvbVNlcnZlcihzb3VyY2U6IGFueSkge1xyXG4gICAgaWYgKHR5cGVvZiBzb3VyY2UgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybiBzb3VyY2U7XHJcbiAgICB9XHJcbiAgICAvLyBPREFUQSB2MyBmb3JtYXRcclxuICAgIGlmIChzb3VyY2UgJiYgc291cmNlLl9fZWRtVHlwZSA9PT0gJ0VkbS5UaW1lJykge1xyXG4gICAgICBsZXQgc2Vjb25kcyA9IE1hdGguZmxvb3Ioc291cmNlLm1zIC8gMTAwMCk7XHJcbiAgICAgIHJldHVybiAnUFQnICsgc2Vjb25kcyArICdTJztcclxuICAgIH1cclxuICAgIHJldHVybiBzb3VyY2U7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcGFyc2VEYXRlQXNVVEMoc291cmNlOiBhbnkpIHtcclxuICAgIGlmICh0eXBlb2Ygc291cmNlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAvLyBjb252ZXJ0IHRvIFVUQyBzdHJpbmcgaWYgbm8gdGltZSB6b25lIHNwZWNpZmllci5cclxuICAgICAgbGV0IGlzTG9jYWxUaW1lID0gX2xvY2FsVGltZVJlZ2V4LnRlc3Qoc291cmNlKTtcclxuICAgICAgLy8gdmFyIGlzTG9jYWxUaW1lID0gIWhhc1RpbWVab25lKHNvdXJjZSk7XHJcbiAgICAgIHNvdXJjZSA9IGlzTG9jYWxUaW1lID8gc291cmNlICsgJ1onIDogc291cmNlO1xyXG4gICAgfVxyXG4gICAgc291cmNlID0gbmV3IERhdGUoRGF0ZS5wYXJzZShzb3VyY2UpKTtcclxuICAgIHJldHVybiBzb3VyY2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqIFJldHVybnMgYSByYXcgdmFsdWUgY29udmVydGVkIHRvIHRoZSBzcGVjaWZpZWQgRGF0YVR5cGUgKi9cclxuICBzdGF0aWMgcGFyc2VSYXdWYWx1ZSh2YWw6IGFueSwgZGF0YVR5cGU/OiBEYXRhVHlwZSkge1xyXG4gICAgLy8gdW5kZWZpbmVkIHZhbHVlcyB3aWxsIGJlIHRoZSBkZWZhdWx0IGZvciBtb3N0IHVubWFwcGVkIHByb3BlcnRpZXMgRVhDRVBUIHdoZW4gdGhleSBhcmUgc2V0XHJcbiAgICAvLyBpbiBhIGpzb25SZXN1bHRzQWRhcHRlciAoIGFuIHVudXN1YWwgdXNlIGNhc2UpLlxyXG4gICAgaWYgKHZhbCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKCF2YWwpIHJldHVybiB2YWw7XHJcbiAgICBpZiAoZGF0YVR5cGUgJiYgZGF0YVR5cGUucGFyc2VSYXdWYWx1ZSkge1xyXG4gICAgICB2YWwgPSBkYXRhVHlwZS5wYXJzZVJhd1ZhbHVlKHZhbCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsO1xyXG4gIH1cclxuXHJcbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbiAgLy8gdXNlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb247IHZpc2libGUgb24gaW5zdGFuY2UgZm9yIHRlc3RpbmcgcHVycG9zZXMuXHJcbiAgc3RhdGljIF9yZXNldENvbnN0YW50cygpIHtcclxuICAgIERhdGFUeXBlLmNvbnN0YW50cyA9IHtcclxuICAgICAgc3RyaW5nUHJlZml4OiBcIktfXCIsXHJcbiAgICAgIG5leHROdW1iZXI6IC0xLFxyXG4gICAgICBuZXh0TnVtYmVySW5jcmVtZW50OiAtMVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vIE5PVCBZRVQgTkVFREVEIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgLy8gdmFyIF91dGNPZmZzZXRNcyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDA7XHJcblxyXG4gIC8vRGF0YVR5cGUucGFyc2VEYXRlQXNMb2NhbCA9IGZ1bmN0aW9uIChzb3VyY2UpIHtcclxuICAvLyAgICB2YXIgZHQgPSBEYXRhVHlwZS5wYXJzZURhdGVzQXNVVEMoc291cmNlKTtcclxuICAvLyAgICBpZiAoX19pc0RhdGUoZHQpKSB7XHJcbiAgLy8gICAgICAgIGR0ID0gbmV3IERhdGUoZHQuZ2V0VGltZSgpICsgX3V0Y09mZnNldE1zKTtcclxuICAvLyAgICB9XHJcbiAgLy8gICAgcmV0dXJuIGR0O1xyXG4gIC8vfTtcclxufVxyXG5EYXRhVHlwZS5wcm90b3R5cGUuXyR0eXBlTmFtZSA9IFwiRGF0YVR5cGVcIjtcclxuRXJyb3JbJ3gnXSA9IERhdGFUeXBlLl9yZXNldENvbnN0YW50cygpO1xyXG5FcnJvclsneCddID0gRGF0YVR5cGUucmVzb2x2ZVN5bWJvbHMoKTtcclxuRXJyb3JbJ3gnXSA9IERhdGFUeXBlLmdldFN5bWJvbHMoKS5mb3JFYWNoKChzeW06IERhdGFUeXBlKSA9PiBzeW0udmFsaWRhdG9yQ3RvciA9IGdldFZhbGlkYXRvckN0b3Ioc3ltKSk7XHJcblxyXG4vLyBwcml2YXRlIGZ1bmN0aW9ucztcclxuXHJcblxyXG5mdW5jdGlvbiBnZXRWYWxpZGF0b3JDdG9yKGRhdGFUeXBlOiBEYXRhVHlwZSkge1xyXG4gIHN3aXRjaCAoZGF0YVR5cGUpIHtcclxuICAgIGNhc2UgRGF0YVR5cGUuU3RyaW5nOlxyXG4gICAgICByZXR1cm4gVmFsaWRhdG9yLnN0cmluZztcclxuICAgIGNhc2UgRGF0YVR5cGUuSW50NjQ6XHJcbiAgICAgIHJldHVybiBWYWxpZGF0b3IuaW50NjQ7XHJcbiAgICBjYXNlIERhdGFUeXBlLkludDMyOlxyXG4gICAgICByZXR1cm4gVmFsaWRhdG9yLmludDMyO1xyXG4gICAgY2FzZSBEYXRhVHlwZS5JbnQxNjpcclxuICAgICAgcmV0dXJuIFZhbGlkYXRvci5pbnQxNjtcclxuICAgIGNhc2UgRGF0YVR5cGUuRGVjaW1hbDpcclxuICAgICAgcmV0dXJuIFZhbGlkYXRvci5udW1iZXI7XHJcbiAgICBjYXNlIERhdGFUeXBlLkRvdWJsZTpcclxuICAgICAgcmV0dXJuIFZhbGlkYXRvci5udW1iZXI7XHJcbiAgICBjYXNlIERhdGFUeXBlLlNpbmdsZTpcclxuICAgICAgcmV0dXJuIFZhbGlkYXRvci5udW1iZXI7XHJcbiAgICBjYXNlIERhdGFUeXBlLkRhdGVUaW1lOlxyXG4gICAgICByZXR1cm4gVmFsaWRhdG9yLmRhdGU7XHJcbiAgICBjYXNlIERhdGFUeXBlLkRhdGVUaW1lT2Zmc2V0OlxyXG4gICAgICByZXR1cm4gVmFsaWRhdG9yLmRhdGU7XHJcbiAgICBjYXNlIERhdGFUeXBlLkJvb2xlYW46XHJcbiAgICAgIHJldHVybiBWYWxpZGF0b3IuYm9vbDtcclxuICAgIGNhc2UgRGF0YVR5cGUuR3VpZDpcclxuICAgICAgcmV0dXJuIFZhbGlkYXRvci5ndWlkO1xyXG4gICAgY2FzZSBEYXRhVHlwZS5CeXRlOlxyXG4gICAgICByZXR1cm4gVmFsaWRhdG9yLmJ5dGU7XHJcbiAgICBjYXNlIERhdGFUeXBlLkJpbmFyeTpcclxuICAgICAgLy8gVE9ETzogZG9uJ3QgcXVpdGUga25vdyBob3cgdG8gdmFsaWRhdGUgdGhpcyB5ZXQuXHJcbiAgICAgIHJldHVybiBWYWxpZGF0b3Iubm9uZTtcclxuICAgIGNhc2UgRGF0YVR5cGUuVGltZTpcclxuICAgICAgcmV0dXJuIFZhbGlkYXRvci5kdXJhdGlvbjtcclxuICAgIGNhc2UgRGF0YVR5cGUuVW5kZWZpbmVkOlxyXG4gICAgICByZXR1cm4gVmFsaWRhdG9yLm5vbmU7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXROZXh0U3RyaW5nKCkge1xyXG4gIHJldHVybiBEYXRhVHlwZS5jb25zdGFudHMuc3RyaW5nUHJlZml4ICsgZ2V0TmV4dE51bWJlcigpLnRvU3RyaW5nKCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldE5leHROdW1iZXIoKSB7XHJcbiAgbGV0IHJlc3VsdCA9IERhdGFUeXBlLmNvbnN0YW50cy5uZXh0TnVtYmVyO1xyXG4gIERhdGFUeXBlLmNvbnN0YW50cy5uZXh0TnVtYmVyICs9IERhdGFUeXBlLmNvbnN0YW50cy5uZXh0TnVtYmVySW5jcmVtZW50O1xyXG4gIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldE5leHRHdWlkKCkge1xyXG4gIHJldHVybiBjb3JlLmdldFV1aWQoKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0TmV4dERhdGVUaW1lKCkge1xyXG4gIHJldHVybiBuZXcgRGF0ZSgpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRDb25jdXJyZW5jeURhdGVUaW1lKHZhbDogYW55KSB7XHJcbiAgLy8gdXNlIHRoZSBjdXJyZW50IGRhdGV0aW1lIGJ1dCBpbnN1cmUgdGhhdCBpdCBpcyBkaWZmZXJlbnQgZnJvbSBwcmV2aW91cyBjYWxsLlxyXG4gIGxldCBkdCA9IG5ldyBEYXRlKCk7XHJcbiAgbGV0IGR0MiA9IG5ldyBEYXRlKCk7XHJcbiAgd2hpbGUgKGR0LmdldFRpbWUoKSA9PT0gZHQyLmdldFRpbWUoKSkge1xyXG4gICAgZHQyID0gbmV3IERhdGUoKTtcclxuICB9XHJcbiAgcmV0dXJuIGR0MjtcclxufVxyXG5cclxuZnVuY3Rpb24gY29lcmNlVG9TdHJpbmcoc291cmNlOiBhbnksIHNvdXJjZVR5cGVOYW1lPzogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIChzb3VyY2UgPT0gbnVsbCkgPyBzb3VyY2UgOiBzb3VyY2UudG9TdHJpbmcoKTtcclxufVxyXG5cclxuZnVuY3Rpb24gY29lcmNlVG9HdWlkKHNvdXJjZTogYW55LCBzb3VyY2VUeXBlTmFtZTogc3RyaW5nKSB7XHJcbiAgaWYgKHNvdXJjZVR5cGVOYW1lID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICByZXR1cm4gc291cmNlLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gIH1cclxuICByZXR1cm4gc291cmNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjb2VyY2VUb0ludChzb3VyY2U6IGFueSwgc291cmNlVHlwZU5hbWU6IHN0cmluZykge1xyXG4gIGlmIChzb3VyY2VUeXBlTmFtZSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgbGV0IHNyYyA9IHNvdXJjZS50cmltKCk7XHJcbiAgICBpZiAoc3JjID09PSBcIlwiKSByZXR1cm4gbnVsbDtcclxuICAgIGxldCB2YWwgPSBwYXJzZUludChzcmMsIDEwKTtcclxuICAgIHJldHVybiBpc05hTih2YWwpID8gc291cmNlIDogdmFsO1xyXG4gIH0gZWxzZSBpZiAoc291cmNlVHlwZU5hbWUgPT09IFwibnVtYmVyXCIpIHtcclxuICAgIHJldHVybiBNYXRoLnJvdW5kKHNvdXJjZSk7XHJcbiAgfVxyXG4gIC8vIGRvIHdlIHdhbnQgdG8gY29lcmNlIGZsb2F0cyAtPiBpbnRzXHJcbiAgcmV0dXJuIHNvdXJjZTtcclxufVxyXG5cclxuZnVuY3Rpb24gY29lcmNlVG9GbG9hdChzb3VyY2U6IGFueSwgc291cmNlVHlwZU5hbWU6IHN0cmluZykge1xyXG4gIGlmIChzb3VyY2VUeXBlTmFtZSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgbGV0IHNyYyA9IHNvdXJjZS50cmltKCk7XHJcbiAgICBpZiAoc3JjID09PSBcIlwiKSByZXR1cm4gbnVsbDtcclxuICAgIGxldCB2YWwgPSBwYXJzZUZsb2F0KHNyYyk7XHJcbiAgICByZXR1cm4gaXNOYU4odmFsKSA/IHNvdXJjZSA6IHZhbDtcclxuICB9XHJcbiAgcmV0dXJuIHNvdXJjZTtcclxufVxyXG5cclxuZnVuY3Rpb24gY29lcmNlVG9EYXRlKHNvdXJjZTogYW55LCBzb3VyY2VUeXBlTmFtZTogc3RyaW5nKSB7XHJcbiAgbGV0IHZhbDogYW55O1xyXG4gIGlmIChzb3VyY2VUeXBlTmFtZSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgbGV0IHNyYyA9IHNvdXJjZS50cmltKCk7XHJcbiAgICBpZiAoc3JjID09PSBcIlwiKSByZXR1cm4gbnVsbDtcclxuICAgIHZhbCA9IG5ldyBEYXRlKERhdGUucGFyc2Uoc3JjKSk7XHJcbiAgICByZXR1cm4gY29yZS5pc0RhdGUodmFsKSA/IHZhbCA6IHNvdXJjZTtcclxuICB9IGVsc2UgaWYgKHNvdXJjZVR5cGVOYW1lID09PSBcIm51bWJlclwiKSB7XHJcbiAgICB2YWwgPSBuZXcgRGF0ZShzb3VyY2UpO1xyXG4gICAgcmV0dXJuIGNvcmUuaXNEYXRlKHZhbCkgPyB2YWwgOiBzb3VyY2U7XHJcbiAgfVxyXG4gIHJldHVybiBzb3VyY2U7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNvZXJjZVRvQm9vbChzb3VyY2U6IGFueSwgc291cmNlVHlwZU5hbWU6IHN0cmluZykge1xyXG4gIGlmIChzb3VyY2VUeXBlTmFtZSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgbGV0IHNyYyA9IHNvdXJjZS50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgIGlmIChzcmMgPT09IFwiZmFsc2VcIiB8fCBzcmMgPT09IFwiXCIpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmIChzcmMgPT09IFwidHJ1ZVwiKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHNvdXJjZTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHNvdXJjZTtcclxufVxyXG5cclxuZnVuY3Rpb24gZm10U3RyaW5nKHZhbDogYW55KSB7XHJcbiAgcmV0dXJuIHZhbCA9PSBudWxsID8gbnVsbCA6IFwiJ1wiICsgdmFsLnJlcGxhY2UoLycvZywgXCInJ1wiKSArIFwiJ1wiO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmbXRJbnQodmFsOiBhbnkpIHtcclxuICByZXR1cm4gdmFsID09IG51bGwgPyBudWxsIDogKCh0eXBlb2YgdmFsID09PSBcInN0cmluZ1wiKSA/IHBhcnNlSW50KHZhbCwgMTApIDogdmFsKTtcclxufVxyXG5cclxuZnVuY3Rpb24gbWFrZUZsb2F0Rm10KGZtdFN1ZmZpeDogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIGZ1bmN0aW9uICh2YWw6IGFueSkge1xyXG4gICAgaWYgKHZhbCA9PSBudWxsKSByZXR1cm4gbnVsbDtcclxuICAgIGlmICh0eXBlb2YgdmFsID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgIHZhbCA9IHBhcnNlRmxvYXQodmFsKTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWwgKyBmbXRTdWZmaXg7XHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZm10RGF0ZVRpbWUodmFsOiBEYXRlKSB7XHJcbiAgaWYgKHZhbCA9PSBudWxsKSByZXR1cm4gbnVsbDtcclxuICB0cnkge1xyXG4gICAgcmV0dXJuIFwiZGF0ZXRpbWUnXCIgKyB2YWwudG9JU09TdHJpbmcoKSArIFwiJ1wiO1xyXG4gIH0gY2F0Y2ggKGUpIHtcclxuICAgIHRocm93RXJyb3IoXCInJTEnIGlzIG5vdCBhIHZhbGlkIGRhdGVUaW1lXCIsIHZhbCk7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBmbXREYXRlVGltZU9mZnNldCh2YWw6IERhdGUpIHtcclxuICBpZiAodmFsID09IG51bGwpIHJldHVybiBudWxsO1xyXG4gIHRyeSB7XHJcbiAgICByZXR1cm4gXCJkYXRldGltZW9mZnNldCdcIiArIHZhbC50b0lTT1N0cmluZygpICsgXCInXCI7XHJcbiAgfSBjYXRjaCAoZSkge1xyXG4gICAgdGhyb3dFcnJvcihcIiclMScgaXMgbm90IGEgdmFsaWQgZGF0ZVRpbWVcIiwgdmFsKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZtdFRpbWUodmFsOiBhbnkpIHtcclxuICBpZiAodmFsID09IG51bGwpIHJldHVybiBudWxsO1xyXG4gIGlmICghY29yZS5pc0R1cmF0aW9uKHZhbCkpIHtcclxuICAgIHRocm93RXJyb3IoXCInJTEnIGlzIG5vdCBhIHZhbGlkIElTTyA4NjAxIGR1cmF0aW9uXCIsIHZhbCk7XHJcbiAgfVxyXG4gIHJldHVybiBcInRpbWUnXCIgKyB2YWwgKyBcIidcIjtcclxufVxyXG5cclxuZnVuY3Rpb24gZm10R3VpZCh2YWw6IGFueSkge1xyXG4gIGlmICh2YWwgPT0gbnVsbCkgcmV0dXJuIG51bGw7XHJcbiAgaWYgKCFjb3JlLmlzR3VpZCh2YWwpKSB7XHJcbiAgICB0aHJvd0Vycm9yKFwiJyUxJyBpcyBub3QgYSB2YWxpZCBndWlkXCIsIHZhbCk7XHJcbiAgfVxyXG4gIHJldHVybiBcImd1aWQnXCIgKyB2YWwgKyBcIidcIjtcclxufVxyXG5cclxuZnVuY3Rpb24gZm10Qm9vbGVhbih2YWw6IGFueSkge1xyXG4gIGlmICh2YWwgPT0gbnVsbCkgcmV0dXJuIG51bGw7XHJcbiAgaWYgKHR5cGVvZiB2YWwgPT09IFwic3RyaW5nXCIpIHtcclxuICAgIHJldHVybiB2YWwudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT09IFwidHJ1ZVwiO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gISF2YWw7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBmbXRCaW5hcnkodmFsOiBhbnkpIHtcclxuICBpZiAodmFsID09IG51bGwpIHJldHVybiB2YWw7XHJcbiAgcmV0dXJuIFwiYmluYXJ5J1wiICsgdmFsICsgXCInXCI7XHJcbn1cclxuXHJcbi8vIFRPRE86IHVzZSBfX2lkZW50aXR5IGluc3RlYWQ7XHJcbmZ1bmN0aW9uIGZtdFVuZGVmaW5lZCh2YWw6IGFueSkge1xyXG4gIHJldHVybiB2YWw7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRocm93RXJyb3IobXNnOiBzdHJpbmcsIHZhbDogYW55KSB7XHJcbiAgbXNnID0gY29yZS5mb3JtYXRTdHJpbmcobXNnLCB2YWwpO1xyXG4gIHRocm93IG5ldyBFcnJvcihtc2cpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwYXJzZVJhd0RhdGUodmFsOiBhbnkpIHtcclxuICBpZiAoIWNvcmUuaXNEYXRlKHZhbCkpIHtcclxuICAgIHZhbCA9IERhdGFUeXBlLnBhcnNlRGF0ZUZyb21TZXJ2ZXIodmFsKTtcclxuICB9XHJcbiAgcmV0dXJuIHZhbDtcclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VSYXdCaW5hcnkodmFsOiBhbnkpIHtcclxuICBpZiAodmFsICYmIHZhbC4kdmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgdmFsID0gdmFsLiR2YWx1ZTsgLy8gdGhpcyB3aWxsIGJlIGEgYnl0ZVtdIGVuY29kZWQgYXMgYSBzdHJpbmdcclxuICB9XHJcbiAgcmV0dXJuIHZhbDtcclxufVxyXG5cclxuLy9mdW5jdGlvbiBoYXNUaW1lWm9uZShzb3VyY2UpIHtcclxuLy8gIHZhciBpeCA9IHNvdXJjZS5pbmRleE9mKFwiVFwiKTtcclxuLy8gIHZhciB0aW1lUGFydCA9IHNvdXJjZS5zdWJzdHJpbmcoaXgrMSk7XHJcbi8vICByZXR1cm4gIHRpbWVQYXJ0LmluZGV4T2YoXCItXCIpID49IDAgfHwgdGltZVBhcnQuaW5kZXhPZihcIitcIikgPj0gMCB8fCB0aW1lUGFydC5pbmRleE9mKFwiWlwiKTtcclxuLy99XHJcblxyXG5cclxuIl19