@expressive/mvc 0.63.5 → 0.64.0

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.
@@ -1,17 +1,18 @@
1
+ const Observable = Symbol("observe");
1
2
  const onReady = () => null;
2
3
  const LISTENERS = /* @__PURE__ */ new WeakMap();
3
4
  const PENDING = /* @__PURE__ */ new WeakMap();
4
5
  const PENDING_KEYS = /* @__PURE__ */ new WeakMap();
5
6
  const DISPATCH = /* @__PURE__ */ new Set();
6
- const OBSERVER = /* @__PURE__ */ new WeakMap();
7
7
  function addListener(subject, callback, select) {
8
8
  let listeners = LISTENERS.get(subject);
9
9
  if (!listeners)
10
10
  LISTENERS.set(subject, listeners = /* @__PURE__ */ new Map([[onReady, void 0]]));
11
- const filter = select === void 0 ? void 0 : /* @__PURE__ */ new Set([select]);
12
- if (!listeners.has(onReady) && !filter)
11
+ if (select !== void 0 && !(select instanceof Set))
12
+ select = /* @__PURE__ */ new Set([select]);
13
+ if (!listeners.has(onReady) && !select)
13
14
  callback.call(subject, true, subject);
14
- listeners.set(callback, filter);
15
+ listeners.set(callback, select);
15
16
  return () => listeners.delete(callback);
16
17
  }
17
18
  function emit(model, key) {
@@ -19,13 +20,13 @@ function emit(model, key) {
19
20
  const notReady = listeners.has(onReady);
20
21
  if (key === true && !notReady)
21
22
  return;
22
- let pending2 = PENDING.get(model);
23
- if (pending2) {
24
- pending2.add(key);
23
+ let pending = PENDING.get(model);
24
+ if (pending) {
25
+ pending.add(key);
25
26
  return;
26
27
  }
27
- PENDING.set(model, pending2 = new Set(notReady ? [true, key] : [key]));
28
- for (const key2 of pending2)
28
+ PENDING.set(model, pending = new Set(notReady ? [true, key] : [key]));
29
+ for (const key2 of pending)
29
30
  for (const [callback, filter] of listeners)
30
31
  if (!filter || filter.has(key2)) {
31
32
  const after = callback.call(model, key2, model);
@@ -43,32 +44,19 @@ function event(subject, key, silent) {
43
44
  return emit(subject, key);
44
45
  if (!key)
45
46
  return emit(subject, true);
46
- let pending2 = PENDING_KEYS.get(subject);
47
- if (!pending2) {
48
- PENDING_KEYS.set(subject, pending2 = /* @__PURE__ */ new Set());
47
+ let pending = PENDING_KEYS.get(subject);
48
+ if (!pending) {
49
+ PENDING_KEYS.set(subject, pending = /* @__PURE__ */ new Set());
49
50
  if (!silent)
50
51
  enqueue(() => {
51
52
  emit(subject, false);
52
53
  PENDING_KEYS.delete(subject);
53
54
  });
54
55
  }
55
- pending2.add(key);
56
+ pending.add(key);
56
57
  if (!silent)
57
58
  emit(subject, key);
58
59
  }
59
- function pending(subject) {
60
- if (PENDING_KEYS.has(subject))
61
- return {
62
- then: (res) => new Promise((res2) => {
63
- const remove = addListener(subject, (key) => {
64
- if (key !== true) {
65
- remove();
66
- return res2.bind(null, Array.from(PENDING_KEYS.get(subject)));
67
- }
68
- });
69
- }).then(res)
70
- };
71
- }
72
60
  function enqueue(eventHandler) {
73
61
  if (!DISPATCH.size)
74
62
  setTimeout(() => {
@@ -83,23 +71,11 @@ function enqueue(eventHandler) {
83
71
  }, 0);
84
72
  DISPATCH.add(eventHandler);
85
73
  }
86
- function createProxy(from, observer) {
87
- const proxy = Object.create(from);
88
- OBSERVER.set(proxy, observer);
89
- return proxy;
90
- }
91
- function watch(from, key, value) {
92
- const access = OBSERVER.get(from);
93
- return access ? access(from, key, value) : value;
94
- }
95
74
  function createEffect(target, callback, argument) {
96
- const listeners = LISTENERS.get(target);
97
75
  let unset;
98
76
  let reset;
99
77
  function invoke() {
100
78
  let stale;
101
- const subscriber = createProxy(target, access);
102
- LISTENERS.set(subscriber, listeners);
103
79
  function onUpdate() {
104
80
  if (stale)
105
81
  return null;
@@ -110,30 +86,15 @@ function createEffect(target, callback, argument) {
110
86
  }
111
87
  return reset;
112
88
  }
113
- function access(from, key, value) {
114
- if (value === void 0 && argument)
115
- throw new Error(`${from}.${key} is required in this context.`);
116
- const listeners2 = LISTENERS.get(from);
117
- let listener = listeners2.get(onUpdate);
118
- if (!listener)
119
- listeners2.set(onUpdate, listener = /* @__PURE__ */ new Set());
120
- listener.add(key);
121
- const nested = LISTENERS.get(value);
122
- if (nested)
123
- LISTENERS.set(
124
- value = createProxy(value, access),
125
- nested
126
- );
127
- return value;
128
- }
89
+ const subscriber = target[Observable](onUpdate, argument === true);
129
90
  try {
130
- const ctx = context(argument === false);
131
- const ret = callback.call(subscriber, subscriber);
132
- const flush = ctx();
133
- reset = ret === null ? null : invoke;
91
+ const exit = enter(argument === false);
92
+ const output = callback.call(subscriber, subscriber);
93
+ const flush = exit();
94
+ reset = output === null ? null : invoke;
134
95
  unset = (key) => {
135
- if (typeof ret == "function")
136
- ret(key);
96
+ if (typeof output == "function")
97
+ output(key);
137
98
  flush();
138
99
  };
139
100
  } catch (err) {
@@ -163,27 +124,23 @@ function createEffect(target, callback, argument) {
163
124
  return cleanup;
164
125
  }
165
126
  let EffectContext;
166
- function context(ignore) {
127
+ function enter(ignore) {
167
128
  if (ignore)
168
129
  return () => () => {
169
130
  };
170
- const current = EffectContext;
171
- const ctx = EffectContext = /* @__PURE__ */ new Set();
131
+ const last = EffectContext;
132
+ const context = EffectContext = /* @__PURE__ */ new Set();
172
133
  return () => {
173
- EffectContext = current;
174
- return () => {
175
- ctx.forEach((fn) => fn());
176
- };
134
+ EffectContext = last;
135
+ return () => context.forEach((fn) => fn());
177
136
  };
178
137
  }
179
138
  export {
139
+ Observable,
180
140
  PENDING_KEYS,
181
141
  addListener,
182
- context,
183
142
  createEffect,
184
- createProxy,
185
- event,
186
- pending,
187
- watch
143
+ enter,
144
+ event
188
145
  };
189
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbnRyb2wudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0eXBlIHsgTW9kZWwgfSBmcm9tIFwiLi9tb2RlbFwiO1xuXG4vKipcbiAqIFVwZGF0ZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqIFxuICogQHBhcmFtIGtleSAtXG4gKiAgIC0gYHN0cmluZ2AgLSBwcm9wZXJ0eSB3aGljaCBoYXMgdXBkYXRlZC5cbiAqICAgLSBgZmFsc2VgIC0gYSBub3JtYWwgdXBkYXRlIGhhcyBjb21wbGV0ZWQuXG4gKiAgIC0gYHRydWVgIC0gaW5pdGlhbCBldmVudDsgaW5zdGFuY2UgaXMgcmVhZHkuXG4gKiAgIC0gYG51bGxgIC0gdGVybWluYWwgZXZlbnQ7IGluc3RhbmNlIGlzIGV4cGlyZWQuXG4gKiBAcGFyYW0gc291cmNlIC0gSW5zdGFuY2Ugb2YgTW9kZWwgZm9yIHdoaWNoIHVwZGF0ZSBoYXMgb2NjdXJlZC5cbiAqL1xudHlwZSBPblVwZGF0ZTxUIGV4dGVuZHMgTW9kZWwgPSBhbnk+ID0gXG4gICh0aGlzOiBULCBrZXk6IHVua25vd24sIHNvdXJjZTogVCkgPT4gKCgpID0+IHZvaWQpIHwgbnVsbCB8IHZvaWQ7XG5cbnR5cGUgT25BY2Nlc3M8VCBleHRlbmRzIE1vZGVsID0gYW55LCBSID0gdW5rbm93bj4gPVxuICAoZnJvbTogVCwga2V5OiBzdHJpbmcgfCBudW1iZXIsIHZhbHVlOiBSKSA9PiB1bmtub3duO1xuXG50eXBlIEVmZmVjdDxUIGV4dGVuZHMgTW9kZWw+ID0gKHRoaXM6IFQsIHByb3h5OiBUKSA9PlxuICAoKHVwZGF0ZTogYm9vbGVhbiB8IG51bGwpID0+IHZvaWQpIHwgUHJvbWlzZTx2b2lkPiB8IG51bGwgfCB2b2lkO1xuXG50eXBlIEV2ZW50ID0gbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IGJvb2xlYW4gfCBzeW1ib2w7XG5cbi8qKiBQbGFjZWhvbGRlciBldmVudCBkZXRlcm1pbmVzIGlmIG1vZGVsIGlzIGluaXRpYWxpemVkIG9yIG5vdC4gKi9cbmNvbnN0IG9uUmVhZHkgPSAoKSA9PiBudWxsO1xuXG5jb25zdCBMSVNURU5FUlMgPSBuZXcgV2Vha01hcDxNb2RlbCwgTWFwPE9uVXBkYXRlLCBTZXQ8RXZlbnQ+IHwgdW5kZWZpbmVkPj4oKTtcblxuLyoqIEV2ZW50cyBwZW5kaW5nIGZvciBhIGdpdmVuIG9iamVjdC4gKi9cbmNvbnN0IFBFTkRJTkcgPSBuZXcgV2Vha01hcDxNb2RlbCwgU2V0PEV2ZW50Pj4oKTtcblxuLyoqIFVwZGF0ZSByZWdpc3Rlci4gKi9cbmNvbnN0IFBFTkRJTkdfS0VZUyA9IG5ldyBXZWFrTWFwPE1vZGVsLCBTZXQ8c3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sPj4oKTtcblxuLyoqIENlbnRyYWwgZXZlbnQgZGlzcGF0Y2guIEJ1bmNoZXMgYWxsIHVwZGF0ZXMgdG8gb2NjdXIgYXQgc2FtZSB0aW1lLiAqL1xuY29uc3QgRElTUEFUQ0ggPSBuZXcgU2V0PCgpID0+IHZvaWQ+KCk7XG5cbmNvbnN0IE9CU0VSVkVSID0gbmV3IFdlYWtNYXA8TW9kZWwsIE9uQWNjZXNzPigpO1xuXG5mdW5jdGlvbiBhZGRMaXN0ZW5lcjxUIGV4dGVuZHMgTW9kZWw+KHN1YmplY3Q6IFQsIGNhbGxiYWNrOiBPblVwZGF0ZTxUPiwgc2VsZWN0PzogRXZlbnQpe1xuICBsZXQgbGlzdGVuZXJzID0gTElTVEVORVJTLmdldChzdWJqZWN0KSE7XG5cbiAgaWYoIWxpc3RlbmVycylcbiAgICBMSVNURU5FUlMuc2V0KHN1YmplY3QsIGxpc3RlbmVycyA9IG5ldyBNYXAoW1tvblJlYWR5LCB1bmRlZmluZWRdXSkpO1xuXG4gIGNvbnN0IGZpbHRlciA9IHNlbGVjdCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogbmV3IFNldChbc2VsZWN0XSk7XG5cbiAgaWYoIWxpc3RlbmVycy5oYXMob25SZWFkeSkgJiYgIWZpbHRlcilcbiAgICBjYWxsYmFjay5jYWxsKHN1YmplY3QsIHRydWUsIHN1YmplY3QpO1xuXG4gIGxpc3RlbmVycy5zZXQoY2FsbGJhY2ssIGZpbHRlcik7XG5cbiAgcmV0dXJuICgpID0+IGxpc3RlbmVycy5kZWxldGUoY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiBlbWl0KG1vZGVsOiBNb2RlbCwga2V5OiBFdmVudCk6IHZvaWQge1xuICBjb25zdCBsaXN0ZW5lcnMgPSBMSVNURU5FUlMuZ2V0KG1vZGVsKSE7XG4gIGNvbnN0IG5vdFJlYWR5ID0gbGlzdGVuZXJzLmhhcyhvblJlYWR5KTtcblxuICBpZihrZXkgPT09IHRydWUgJiYgIW5vdFJlYWR5KVxuICAgIHJldHVybjtcblxuICBsZXQgcGVuZGluZyA9IFBFTkRJTkcuZ2V0KG1vZGVsKTtcblxuICBpZihwZW5kaW5nKXtcbiAgICBwZW5kaW5nLmFkZChrZXkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIFBFTkRJTkcuc2V0KG1vZGVsLCBwZW5kaW5nID0gbmV3IFNldChub3RSZWFkeSA/IFt0cnVlLCBrZXldIDogW2tleV0pKTtcblxuICBmb3IoY29uc3Qga2V5IG9mIHBlbmRpbmcpXG4gICAgZm9yKGNvbnN0IFtjYWxsYmFjaywgZmlsdGVyXSBvZiBsaXN0ZW5lcnMpXG4gICAgICBpZighZmlsdGVyIHx8IGZpbHRlci5oYXMoa2V5KSl7XG4gICAgICAgIGNvbnN0IGFmdGVyID0gY2FsbGJhY2suY2FsbChtb2RlbCwga2V5LCBtb2RlbCk7XG5cbiAgICAgICAgaWYoYWZ0ZXIpXG4gICAgICAgICAgZW5xdWV1ZShhZnRlcik7XG5cbiAgICAgICAgZWxzZSBpZihhZnRlciA9PT0gbnVsbClcbiAgICAgICAgICBsaXN0ZW5lcnMuZGVsZXRlKGNhbGxiYWNrKTtcbiAgICAgIH1cblxuICBpZihrZXkgPT09IG51bGwpXG4gICAgbGlzdGVuZXJzLmNsZWFyKCk7XG4gIFxuICBQRU5ESU5HLmRlbGV0ZShtb2RlbCk7XG59XG5cbmZ1bmN0aW9uIGV2ZW50KFxuICBzdWJqZWN0OiBNb2RlbCxcbiAga2V5Pzogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sIHwgbnVsbCxcbiAgc2lsZW50PzogYm9vbGVhbil7XG5cbiAgaWYoa2V5ID09PSBudWxsKVxuICAgIHJldHVybiBlbWl0KHN1YmplY3QsIGtleSk7XG5cbiAgaWYoIWtleSlcbiAgICByZXR1cm4gZW1pdChzdWJqZWN0LCB0cnVlKTtcblxuICBsZXQgcGVuZGluZyA9IFBFTkRJTkdfS0VZUy5nZXQoc3ViamVjdCk7XG5cbiAgaWYoIXBlbmRpbmcpe1xuICAgIFBFTkRJTkdfS0VZUy5zZXQoc3ViamVjdCwgcGVuZGluZyA9IG5ldyBTZXQoKSk7XG5cbiAgICBpZighc2lsZW50KVxuICAgICAgZW5xdWV1ZSgoKSA9PiB7XG4gICAgICAgIGVtaXQoc3ViamVjdCwgZmFsc2UpO1xuICAgICAgICBQRU5ESU5HX0tFWVMuZGVsZXRlKHN1YmplY3QpXG4gICAgICB9KVxuICB9XG5cbiAgcGVuZGluZy5hZGQoa2V5KTtcblxuICBpZighc2lsZW50KVxuICAgIGVtaXQoc3ViamVjdCwga2V5KTtcbn1cblxuZnVuY3Rpb24gcGVuZGluZzxUIGV4dGVuZHMgTW9kZWw+KHN1YmplY3Q6IFQpe1xuICBpZihQRU5ESU5HX0tFWVMuaGFzKHN1YmplY3QpKVxuICAgIHJldHVybiA8UHJvbWlzZUxpa2U8TW9kZWwuRXZlbnQ8VD5bXT4+IHtcbiAgICAgIHRoZW46IChyZXMpID0+IG5ldyBQcm9taXNlPGFueT4ocmVzID0+IHtcbiAgICAgICAgY29uc3QgcmVtb3ZlID0gYWRkTGlzdGVuZXIoc3ViamVjdCwga2V5ID0+IHtcbiAgICAgICAgICBpZihrZXkgIT09IHRydWUpe1xuICAgICAgICAgICAgcmVtb3ZlKCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmJpbmQobnVsbCwgQXJyYXkuZnJvbShQRU5ESU5HX0tFWVMuZ2V0KHN1YmplY3QpISkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KS50aGVuKHJlcylcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVucXVldWUoZXZlbnRIYW5kbGVyOiAoKCkgPT4gdm9pZCkpe1xuICBpZighRElTUEFUQ0guc2l6ZSlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIERJU1BBVENILmZvckVhY2goZXZlbnQgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGV2ZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2goZXJyKXtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgRElTUEFUQ0guY2xlYXIoKTtcbiAgICB9LCAwKTtcblxuICBESVNQQVRDSC5hZGQoZXZlbnRIYW5kbGVyKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlUHJveHk8VCBleHRlbmRzIE1vZGVsPihmcm9tOiBULCBvYnNlcnZlcjogT25BY2Nlc3M8VD4pe1xuICBjb25zdCBwcm94eSA9IE9iamVjdC5jcmVhdGUoZnJvbSkgYXMgVDtcbiAgT0JTRVJWRVIuc2V0KHByb3h5LCBvYnNlcnZlcik7XG4gIHJldHVybiBwcm94eTtcbn1cblxuZnVuY3Rpb24gd2F0Y2goZnJvbTogYW55LCBrZXk6IHN0cmluZyB8IG51bWJlciwgdmFsdWU/OiBhbnkpe1xuICBjb25zdCBhY2Nlc3MgPSBPQlNFUlZFUi5nZXQoZnJvbSk7XG4gIHJldHVybiBhY2Nlc3MgPyBhY2Nlc3MoZnJvbSwga2V5LCB2YWx1ZSkgOiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBzaWRlLWVmZmVjdCB3aGljaCB3aWxsIHVwZGF0ZSB3aGVuZXZlciB2YWx1ZXMgYWNjZXNzZWQgY2hhbmdlLlxuICogQ2FsbGJhY2sgaXMgY2FsbGVkIGltbWVkaWF0ZWx5IGFuZCB3aGVuZXZlciB2YWx1ZXMgYXJlIHN0YWxlLlxuICogXG4gKiBAcGFyYW0gdGFyZ2V0IC0gSW5zdGFuY2Ugb2YgTW9kZWwgdG8gb2JzZXJ2ZS5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGludm9rZSB3aGVuIHZhbHVlcyBjaGFuZ2UuXG4gKiBAcGFyYW0gcmVxdWlyZVZhbHVlcyAtIElmIGB0cnVlYCB3aWxsIHRocm93IGlmIGFjY2Vzc2luZyBhIHZhbHVlIHdoaWNoIGlzIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBjcmVhdGVFZmZlY3Q8VCBleHRlbmRzIE1vZGVsPih0YXJnZXQ6IFQsIGNhbGxiYWNrOiBFZmZlY3Q8UmVxdWlyZWQ8VD4+LCByZXF1aXJlVmFsdWVzOiB0cnVlKTogKCkgPT4gdm9pZDtcbmZ1bmN0aW9uIGNyZWF0ZUVmZmVjdDxUIGV4dGVuZHMgTW9kZWw+KHRhcmdldDogVCwgY2FsbGJhY2s6IEVmZmVjdDxUPiwgcmVjdXJzaXZlPzogYm9vbGVhbik6ICgpID0+IHZvaWQ7XG5mdW5jdGlvbiBjcmVhdGVFZmZlY3Q8VCBleHRlbmRzIE1vZGVsPih0YXJnZXQ6IFQsIGNhbGxiYWNrOiBFZmZlY3Q8VD4sIGFyZ3VtZW50PzogYm9vbGVhbil7XG4gIGNvbnN0IGxpc3RlbmVycyA9IExJU1RFTkVSUy5nZXQodGFyZ2V0KSE7XG5cbiAgbGV0IHVuc2V0OiAoKHVwZGF0ZTogYm9vbGVhbiB8IG51bGwpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBsZXQgcmVzZXQ6ICgoKSA9PiB2b2lkKSB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgZnVuY3Rpb24gaW52b2tlKCl7XG4gICAgbGV0IHN0YWxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgY29uc3Qgc3Vic2NyaWJlciA9IGNyZWF0ZVByb3h5KHRhcmdldCwgYWNjZXNzKTtcblxuICAgIExJU1RFTkVSUy5zZXQoc3Vic2NyaWJlciwgbGlzdGVuZXJzKTtcblxuICAgIGZ1bmN0aW9uIG9uVXBkYXRlKCkge1xuICAgICAgaWYgKHN0YWxlKVxuICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgc3RhbGUgPSB0cnVlO1xuXG4gICAgICBpZiAocmVzZXQgJiYgdW5zZXQpIHtcbiAgICAgICAgdW5zZXQodHJ1ZSk7XG4gICAgICAgIHVuc2V0ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWNjZXNzKGZyb206IE1vZGVsLCBrZXk6IHN0cmluZyB8IG51bWJlciwgdmFsdWU6IGFueSkge1xuICAgICAgaWYodmFsdWUgPT09IHVuZGVmaW5lZCAmJiBhcmd1bWVudClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2Zyb219LiR7a2V5fSBpcyByZXF1aXJlZCBpbiB0aGlzIGNvbnRleHQuYCk7XG5cbiAgICAgIGNvbnN0IGxpc3RlbmVycyA9IExJU1RFTkVSUy5nZXQoZnJvbSkhO1xuICAgICAgbGV0IGxpc3RlbmVyID0gbGlzdGVuZXJzLmdldChvblVwZGF0ZSk7XG5cbiAgICAgIGlmKCFsaXN0ZW5lcilcbiAgICAgICAgbGlzdGVuZXJzLnNldChvblVwZGF0ZSwgbGlzdGVuZXIgPSBuZXcgU2V0KTtcblxuICAgICAgbGlzdGVuZXIuYWRkKGtleSk7XG5cbiAgICAgIGNvbnN0IG5lc3RlZCA9IExJU1RFTkVSUy5nZXQodmFsdWUpO1xuXG4gICAgICBpZihuZXN0ZWQpXG4gICAgICAgIExJU1RFTkVSUy5zZXQoXG4gICAgICAgICAgdmFsdWUgPSBjcmVhdGVQcm94eSh2YWx1ZSwgYWNjZXNzKSxcbiAgICAgICAgICBuZXN0ZWRcbiAgICAgICAgKTtcblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBjdHggPSBjb250ZXh0KGFyZ3VtZW50ID09PSBmYWxzZSlcbiAgICAgIGNvbnN0IHJldCA9IGNhbGxiYWNrLmNhbGwoc3Vic2NyaWJlciwgc3Vic2NyaWJlcik7XG4gICAgICBjb25zdCBmbHVzaCA9IGN0eCgpO1xuXG4gICAgICByZXNldCA9IHJldCA9PT0gbnVsbCA/IG51bGwgOiBpbnZva2U7XG4gICAgICB1bnNldCA9IGtleSA9PiB7XG4gICAgICAgIGlmKHR5cGVvZiByZXQgPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgIHJldChrZXkpO1xuXG4gICAgICAgIGZsdXNoKCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNhdGNoKGVycil7XG4gICAgICBpZihlcnIgaW5zdGFuY2VvZiBQcm9taXNlKXtcbiAgICAgICAgcmVzZXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGVyci50aGVuKGludm9rZSk7XG4gICAgICB9XG4gICAgICBlbHNlXG4gICAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjbGVhbnVwKCl7XG4gICAgaWYodW5zZXQpXG4gICAgICB1bnNldChmYWxzZSk7XG5cbiAgICByZXNldCA9IG51bGw7XG4gIH07XG5cbiAgaWYoRWZmZWN0Q29udGV4dCAmJiBhcmd1bWVudCAhPT0gZmFsc2UpXG4gICAgRWZmZWN0Q29udGV4dC5hZGQoY2xlYW51cCk7XG5cbiAgYWRkTGlzdGVuZXIodGFyZ2V0LCBrZXkgPT4ge1xuICAgIGlmKGtleSA9PT0gdHJ1ZSlcbiAgICAgIGludm9rZSgpO1xuXG4gICAgZWxzZSBpZighcmVzZXQpXG4gICAgICByZXR1cm4gcmVzZXQ7XG5cbiAgICBpZihrZXkgPT09IG51bGwgJiYgdW5zZXQpXG4gICAgICB1bnNldChudWxsKTtcbiAgfSk7XG4gIFxuICByZXR1cm4gY2xlYW51cDtcbn1cblxubGV0IEVmZmVjdENvbnRleHQ6IFNldDwoKSA9PiB2b2lkPiB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRleHQoaWdub3JlPzogYm9vbGVhbil7XG4gIGlmKGlnbm9yZSlcbiAgICByZXR1cm4gKCkgPT4gKCkgPT4ge307XG5cbiAgY29uc3QgY3VycmVudCA9IEVmZmVjdENvbnRleHQ7XG4gIGNvbnN0IGN0eCA9IEVmZmVjdENvbnRleHQgPSBuZXcgU2V0O1xuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgRWZmZWN0Q29udGV4dCA9IGN1cnJlbnQ7XG4gICAgXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGN0eC5mb3JFYWNoKGZuID0+IGZuKCkpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQge1xuICBhZGRMaXN0ZW5lcixcbiAgY3JlYXRlRWZmZWN0LFxuICBjcmVhdGVQcm94eSxcbiAgZXZlbnQsXG4gIE9uVXBkYXRlLFxuICBQRU5ESU5HX0tFWVMsXG4gIHBlbmRpbmcsXG4gIHdhdGNoXG59Il0sCiAgIm1hcHBpbmdzIjogIkFBd0JBLE1BQU0sVUFBVSxNQUFNO0FBRXRCLE1BQU0sWUFBWSxvQkFBSSxRQUFzRDtBQUc1RSxNQUFNLFVBQVUsb0JBQUksUUFBMkI7QUFHL0MsTUFBTSxlQUFlLG9CQUFJLFFBQThDO0FBR3ZFLE1BQU0sV0FBVyxvQkFBSSxJQUFnQjtBQUVyQyxNQUFNLFdBQVcsb0JBQUksUUFBeUI7QUFFOUMsU0FBUyxZQUE2QixTQUFZLFVBQXVCLFFBQWU7QUFDdEYsTUFBSSxZQUFZLFVBQVUsSUFBSSxPQUFPO0FBRXJDLE1BQUcsQ0FBQztBQUNGLGNBQVUsSUFBSSxTQUFTLFlBQVksb0JBQUksSUFBSSxDQUFDLENBQUMsU0FBUyxNQUFTLENBQUMsQ0FBQyxDQUFDO0FBRXBFLFFBQU0sU0FBUyxXQUFXLFNBQVksU0FBWSxvQkFBSSxJQUFJLENBQUMsTUFBTSxDQUFDO0FBRWxFLE1BQUcsQ0FBQyxVQUFVLElBQUksT0FBTyxLQUFLLENBQUM7QUFDN0IsYUFBUyxLQUFLLFNBQVMsTUFBTSxPQUFPO0FBRXRDLFlBQVUsSUFBSSxVQUFVLE1BQU07QUFFOUIsU0FBTyxNQUFNLFVBQVUsT0FBTyxRQUFRO0FBQ3hDO0FBRUEsU0FBUyxLQUFLLE9BQWMsS0FBa0I7QUFDNUMsUUFBTSxZQUFZLFVBQVUsSUFBSSxLQUFLO0FBQ3JDLFFBQU0sV0FBVyxVQUFVLElBQUksT0FBTztBQUV0QyxNQUFHLFFBQVEsUUFBUSxDQUFDO0FBQ2xCO0FBRUYsTUFBSUEsV0FBVSxRQUFRLElBQUksS0FBSztBQUUvQixNQUFHQSxVQUFRO0FBQ1QsSUFBQUEsU0FBUSxJQUFJLEdBQUc7QUFDZjtBQUFBLEVBQ0Y7QUFFQSxVQUFRLElBQUksT0FBT0EsV0FBVSxJQUFJLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFcEUsYUFBVUMsUUFBT0Q7QUFDZixlQUFVLENBQUMsVUFBVSxNQUFNLEtBQUs7QUFDOUIsVUFBRyxDQUFDLFVBQVUsT0FBTyxJQUFJQyxJQUFHLEdBQUU7QUFDNUIsY0FBTSxRQUFRLFNBQVMsS0FBSyxPQUFPQSxNQUFLLEtBQUs7QUFFN0MsWUFBRztBQUNELGtCQUFRLEtBQUs7QUFBQSxpQkFFUCxVQUFVO0FBQ2hCLG9CQUFVLE9BQU8sUUFBUTtBQUFBLE1BQzdCO0FBRUosTUFBRyxRQUFRO0FBQ1QsY0FBVSxNQUFNO0FBRWxCLFVBQVEsT0FBTyxLQUFLO0FBQ3RCO0FBRUEsU0FBUyxNQUNQLFNBQ0EsS0FDQSxRQUFpQjtBQUVqQixNQUFHLFFBQVE7QUFDVCxXQUFPLEtBQUssU0FBUyxHQUFHO0FBRTFCLE1BQUcsQ0FBQztBQUNGLFdBQU8sS0FBSyxTQUFTLElBQUk7QUFFM0IsTUFBSUQsV0FBVSxhQUFhLElBQUksT0FBTztBQUV0QyxNQUFHLENBQUNBLFVBQVE7QUFDVixpQkFBYSxJQUFJLFNBQVNBLFdBQVUsb0JBQUksSUFBSSxDQUFDO0FBRTdDLFFBQUcsQ0FBQztBQUNGLGNBQVEsTUFBTTtBQUNaLGFBQUssU0FBUyxLQUFLO0FBQ25CLHFCQUFhLE9BQU8sT0FBTztBQUFBLE1BQzdCLENBQUM7QUFBQSxFQUNMO0FBRUEsRUFBQUEsU0FBUSxJQUFJLEdBQUc7QUFFZixNQUFHLENBQUM7QUFDRixTQUFLLFNBQVMsR0FBRztBQUNyQjtBQUVBLFNBQVMsUUFBeUIsU0FBVztBQUMzQyxNQUFHLGFBQWEsSUFBSSxPQUFPO0FBQ3pCLFdBQXVDO0FBQUEsTUFDckMsTUFBTSxDQUFDLFFBQVEsSUFBSSxRQUFhLENBQUFFLFNBQU87QUFDckMsY0FBTSxTQUFTLFlBQVksU0FBUyxTQUFPO0FBQ3pDLGNBQUcsUUFBUSxNQUFLO0FBQ2QsbUJBQU87QUFDUCxtQkFBT0EsS0FBSSxLQUFLLE1BQU0sTUFBTSxLQUFLLGFBQWEsSUFBSSxPQUFPLENBQUUsQ0FBQztBQUFBLFVBQzlEO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSCxDQUFDLEVBQUUsS0FBSyxHQUFHO0FBQUEsSUFDYjtBQUNKO0FBRUEsU0FBUyxRQUFRLGNBQTJCO0FBQzFDLE1BQUcsQ0FBQyxTQUFTO0FBQ1gsZUFBVyxNQUFNO0FBQ2YsZUFBUyxRQUFRLENBQUFDLFdBQVM7QUFDeEIsWUFBSTtBQUNGLFVBQUFBLE9BQU07QUFBQSxRQUNSLFNBQ00sS0FBSTtBQUNSLGtCQUFRLE1BQU0sR0FBRztBQUFBLFFBQ25CO0FBQUEsTUFDRixDQUFDO0FBQ0QsZUFBUyxNQUFNO0FBQUEsSUFDakIsR0FBRyxDQUFDO0FBRU4sV0FBUyxJQUFJLFlBQVk7QUFDM0I7QUFFQSxTQUFTLFlBQTZCLE1BQVMsVUFBc0I7QUFDbkUsUUFBTSxRQUFRLE9BQU8sT0FBTyxJQUFJO0FBQ2hDLFdBQVMsSUFBSSxPQUFPLFFBQVE7QUFDNUIsU0FBTztBQUNUO0FBRUEsU0FBUyxNQUFNLE1BQVcsS0FBc0IsT0FBWTtBQUMxRCxRQUFNLFNBQVMsU0FBUyxJQUFJLElBQUk7QUFDaEMsU0FBTyxTQUFTLE9BQU8sTUFBTSxLQUFLLEtBQUssSUFBSTtBQUM3QztBQVlBLFNBQVMsYUFBOEIsUUFBVyxVQUFxQixVQUFtQjtBQUN4RixRQUFNLFlBQVksVUFBVSxJQUFJLE1BQU07QUFFdEMsTUFBSTtBQUNKLE1BQUk7QUFFSixXQUFTLFNBQVE7QUFDZixRQUFJO0FBRUosVUFBTSxhQUFhLFlBQVksUUFBUSxNQUFNO0FBRTdDLGNBQVUsSUFBSSxZQUFZLFNBQVM7QUFFbkMsYUFBUyxXQUFXO0FBQ2xCLFVBQUk7QUFDRixlQUFPO0FBRVQsY0FBUTtBQUVSLFVBQUksU0FBUyxPQUFPO0FBQ2xCLGNBQU0sSUFBSTtBQUNWLGdCQUFRO0FBQUEsTUFDVjtBQUVBLGFBQU87QUFBQSxJQUNUO0FBRUEsYUFBUyxPQUFPLE1BQWEsS0FBc0IsT0FBWTtBQUM3RCxVQUFHLFVBQVUsVUFBYTtBQUN4QixjQUFNLElBQUksTUFBTSxHQUFHLElBQUksSUFBSSxHQUFHLCtCQUErQjtBQUUvRCxZQUFNQyxhQUFZLFVBQVUsSUFBSSxJQUFJO0FBQ3BDLFVBQUksV0FBV0EsV0FBVSxJQUFJLFFBQVE7QUFFckMsVUFBRyxDQUFDO0FBQ0YsUUFBQUEsV0FBVSxJQUFJLFVBQVUsV0FBVyxvQkFBSSxLQUFHO0FBRTVDLGVBQVMsSUFBSSxHQUFHO0FBRWhCLFlBQU0sU0FBUyxVQUFVLElBQUksS0FBSztBQUVsQyxVQUFHO0FBQ0Qsa0JBQVU7QUFBQSxVQUNSLFFBQVEsWUFBWSxPQUFPLE1BQU07QUFBQSxVQUNqQztBQUFBLFFBQ0Y7QUFFRixhQUFPO0FBQUEsSUFDVDtBQUVBLFFBQUk7QUFDRixZQUFNLE1BQU0sUUFBUSxhQUFhLEtBQUs7QUFDdEMsWUFBTSxNQUFNLFNBQVMsS0FBSyxZQUFZLFVBQVU7QUFDaEQsWUFBTSxRQUFRLElBQUk7QUFFbEIsY0FBUSxRQUFRLE9BQU8sT0FBTztBQUM5QixjQUFRLFNBQU87QUFDYixZQUFHLE9BQU8sT0FBTztBQUNmLGNBQUksR0FBRztBQUVULGNBQU07QUFBQSxNQUNSO0FBQUEsSUFDRixTQUNNLEtBQUk7QUFDUixVQUFHLGVBQWUsU0FBUTtBQUN4QixnQkFBUTtBQUNSLFlBQUksS0FBSyxNQUFNO0FBQUEsTUFDakI7QUFFRSxjQUFNO0FBQUEsSUFDVjtBQUFBLEVBQ0Y7QUFFQSxXQUFTLFVBQVM7QUFDaEIsUUFBRztBQUNELFlBQU0sS0FBSztBQUViLFlBQVE7QUFBQSxFQUNWO0FBQUM7QUFFRCxNQUFHLGlCQUFpQixhQUFhO0FBQy9CLGtCQUFjLElBQUksT0FBTztBQUUzQixjQUFZLFFBQVEsU0FBTztBQUN6QixRQUFHLFFBQVE7QUFDVCxhQUFPO0FBQUEsYUFFRCxDQUFDO0FBQ1AsYUFBTztBQUVULFFBQUcsUUFBUSxRQUFRO0FBQ2pCLFlBQU0sSUFBSTtBQUFBLEVBQ2QsQ0FBQztBQUVELFNBQU87QUFDVDtBQUVBLElBQUk7QUFFRyxTQUFTLFFBQVEsUUFBaUI7QUFDdkMsTUFBRztBQUNELFdBQU8sTUFBTSxNQUFNO0FBQUEsSUFBQztBQUV0QixRQUFNLFVBQVU7QUFDaEIsUUFBTSxNQUFNLGdCQUFnQixvQkFBSTtBQUVoQyxTQUFPLE1BQU07QUFDWCxvQkFBZ0I7QUFFaEIsV0FBTyxNQUFNO0FBQ1gsVUFBSSxRQUFRLFFBQU0sR0FBRyxDQUFDO0FBQUEsSUFDeEI7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbInBlbmRpbmciLCAia2V5IiwgInJlcyIsICJldmVudCIsICJsaXN0ZW5lcnMiXQp9Cg==
146
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbnRyb2wudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogVXBkYXRlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICogXG4gKiBAcGFyYW0ga2V5IC1cbiAqICAgLSBgc3RyaW5nYCAtIHByb3BlcnR5IHdoaWNoIGhhcyB1cGRhdGVkLlxuICogICAtIGBmYWxzZWAgLSBhIG5vcm1hbCB1cGRhdGUgaGFzIGNvbXBsZXRlZC5cbiAqICAgLSBgdHJ1ZWAgLSBpbml0aWFsIGV2ZW50OyBpbnN0YW5jZSBpcyByZWFkeS5cbiAqICAgLSBgbnVsbGAgLSB0ZXJtaW5hbCBldmVudDsgaW5zdGFuY2UgaXMgZXhwaXJlZC5cbiAqIEBwYXJhbSBzb3VyY2UgLSBJbnN0YW5jZSBvZiBNb2RlbCBmb3Igd2hpY2ggdXBkYXRlIGhhcyBvY2N1cmVkLlxuICovXG50eXBlIE9uVXBkYXRlPFQgZXh0ZW5kcyBPYnNlcnZhYmxlID0gYW55PiA9IFxuICAodGhpczogVCwga2V5OiB1bmtub3duLCBzb3VyY2U6IFQpID0+ICgoKSA9PiB2b2lkKSB8IG51bGwgfCB2b2lkO1xuXG50eXBlIEVmZmVjdDxUIGV4dGVuZHMgT2JzZXJ2YWJsZT4gPSAodGhpczogVCwgcHJveHk6IFQpID0+XG4gICgodXBkYXRlOiBib29sZWFuIHwgbnVsbCkgPT4gdm9pZCkgfCBQcm9taXNlPHZvaWQ+IHwgbnVsbCB8IHZvaWQ7XG5cbnR5cGUgRXZlbnQgPSBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgYm9vbGVhbiB8IHN5bWJvbDtcblxuaW50ZXJmYWNlIE9ic2VydmFibGUge1xuICBbT2JzZXJ2YWJsZV0oY2FsbGJhY2s6IE9uVXBkYXRlLCByZXF1aXJlZD86IGJvb2xlYW4pOiB0aGlzO1xufVxuXG5jb25zdCBPYnNlcnZhYmxlID0gU3ltYm9sKFwib2JzZXJ2ZVwiKTtcblxuLyoqIFBsYWNlaG9sZGVyIGV2ZW50IGRldGVybWluZXMgaWYgbW9kZWwgaXMgaW5pdGlhbGl6ZWQgb3Igbm90LiAqL1xuY29uc3Qgb25SZWFkeSA9ICgpID0+IG51bGw7XG5cbmNvbnN0IExJU1RFTkVSUyA9IG5ldyBXZWFrTWFwPE9ic2VydmFibGUsIE1hcDxPblVwZGF0ZSwgU2V0PEV2ZW50PiB8IHVuZGVmaW5lZD4+KCk7XG5cbi8qKiBFdmVudHMgcGVuZGluZyBmb3IgYSBnaXZlbiBvYmplY3QuICovXG5jb25zdCBQRU5ESU5HID0gbmV3IFdlYWtNYXA8T2JzZXJ2YWJsZSwgU2V0PEV2ZW50Pj4oKTtcblxuLyoqIFVwZGF0ZSByZWdpc3Rlci4gKi9cbmNvbnN0IFBFTkRJTkdfS0VZUyA9IG5ldyBXZWFrTWFwPE9ic2VydmFibGUsIFNldDxzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2w+PigpO1xuXG4vKiogQ2VudHJhbCBldmVudCBkaXNwYXRjaC4gQnVuY2hlcyBhbGwgdXBkYXRlcyB0byBvY2N1ciBhdCBzYW1lIHRpbWUuICovXG5jb25zdCBESVNQQVRDSCA9IG5ldyBTZXQ8KCkgPT4gdm9pZD4oKTtcblxuZnVuY3Rpb24gYWRkTGlzdGVuZXI8VCBleHRlbmRzIE9ic2VydmFibGU+KFxuICBzdWJqZWN0OiBULCBjYWxsYmFjazogT25VcGRhdGU8VD4sIHNlbGVjdD86IEV2ZW50IHwgU2V0PEV2ZW50Pil7XG5cbiAgbGV0IGxpc3RlbmVycyA9IExJU1RFTkVSUy5nZXQoc3ViamVjdCkhO1xuXG4gIGlmKCFsaXN0ZW5lcnMpXG4gICAgTElTVEVORVJTLnNldChzdWJqZWN0LCBsaXN0ZW5lcnMgPSBuZXcgTWFwKFtbb25SZWFkeSwgdW5kZWZpbmVkXV0pKTtcblxuICBpZihzZWxlY3QgIT09IHVuZGVmaW5lZCAmJiAhKHNlbGVjdCBpbnN0YW5jZW9mIFNldCkpXG4gICAgc2VsZWN0ID0gbmV3IFNldChbc2VsZWN0XSk7XG5cbiAgaWYoIWxpc3RlbmVycy5oYXMob25SZWFkeSkgJiYgIXNlbGVjdClcbiAgICBjYWxsYmFjay5jYWxsKHN1YmplY3QsIHRydWUsIHN1YmplY3QpO1xuXG4gIGxpc3RlbmVycy5zZXQoY2FsbGJhY2ssIHNlbGVjdCk7XG5cbiAgcmV0dXJuICgpID0+IGxpc3RlbmVycy5kZWxldGUoY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiBlbWl0KG1vZGVsOiBPYnNlcnZhYmxlLCBrZXk6IEV2ZW50KTogdm9pZCB7XG4gIGNvbnN0IGxpc3RlbmVycyA9IExJU1RFTkVSUy5nZXQobW9kZWwpITtcbiAgY29uc3Qgbm90UmVhZHkgPSBsaXN0ZW5lcnMuaGFzKG9uUmVhZHkpO1xuXG4gIGlmKGtleSA9PT0gdHJ1ZSAmJiAhbm90UmVhZHkpXG4gICAgcmV0dXJuO1xuXG4gIGxldCBwZW5kaW5nID0gUEVORElORy5nZXQobW9kZWwpO1xuXG4gIGlmKHBlbmRpbmcpe1xuICAgIHBlbmRpbmcuYWRkKGtleSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgUEVORElORy5zZXQobW9kZWwsIHBlbmRpbmcgPSBuZXcgU2V0KG5vdFJlYWR5ID8gW3RydWUsIGtleV0gOiBba2V5XSkpO1xuXG4gIGZvcihjb25zdCBrZXkgb2YgcGVuZGluZylcbiAgICBmb3IoY29uc3QgW2NhbGxiYWNrLCBmaWx0ZXJdIG9mIGxpc3RlbmVycylcbiAgICAgIGlmKCFmaWx0ZXIgfHwgZmlsdGVyLmhhcyhrZXkpKXtcbiAgICAgICAgY29uc3QgYWZ0ZXIgPSBjYWxsYmFjay5jYWxsKG1vZGVsLCBrZXksIG1vZGVsKTtcblxuICAgICAgICBpZihhZnRlcilcbiAgICAgICAgICBlbnF1ZXVlKGFmdGVyKTtcblxuICAgICAgICBlbHNlIGlmKGFmdGVyID09PSBudWxsKVxuICAgICAgICAgIGxpc3RlbmVycy5kZWxldGUoY2FsbGJhY2spO1xuICAgICAgfVxuXG4gIGlmKGtleSA9PT0gbnVsbClcbiAgICBsaXN0ZW5lcnMuY2xlYXIoKTtcbiAgXG4gIFBFTkRJTkcuZGVsZXRlKG1vZGVsKTtcbn1cblxuZnVuY3Rpb24gZXZlbnQoXG4gIHN1YmplY3Q6IE9ic2VydmFibGUsXG4gIGtleT86IHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCB8IG51bGwsXG4gIHNpbGVudD86IGJvb2xlYW4pe1xuXG4gIGlmKGtleSA9PT0gbnVsbClcbiAgICByZXR1cm4gZW1pdChzdWJqZWN0LCBrZXkpO1xuXG4gIGlmKCFrZXkpXG4gICAgcmV0dXJuIGVtaXQoc3ViamVjdCwgdHJ1ZSk7XG5cbiAgbGV0IHBlbmRpbmcgPSBQRU5ESU5HX0tFWVMuZ2V0KHN1YmplY3QpO1xuXG4gIGlmKCFwZW5kaW5nKXtcbiAgICBQRU5ESU5HX0tFWVMuc2V0KHN1YmplY3QsIHBlbmRpbmcgPSBuZXcgU2V0KCkpO1xuXG4gICAgaWYoIXNpbGVudClcbiAgICAgIGVucXVldWUoKCkgPT4ge1xuICAgICAgICBlbWl0KHN1YmplY3QsIGZhbHNlKTtcbiAgICAgICAgUEVORElOR19LRVlTLmRlbGV0ZShzdWJqZWN0KVxuICAgICAgfSlcbiAgfVxuXG4gIHBlbmRpbmcuYWRkKGtleSk7XG5cbiAgaWYoIXNpbGVudClcbiAgICBlbWl0KHN1YmplY3QsIGtleSk7XG59XG5cbmZ1bmN0aW9uIGVucXVldWUoZXZlbnRIYW5kbGVyOiAoKCkgPT4gdm9pZCkpe1xuICBpZighRElTUEFUQ0guc2l6ZSlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIERJU1BBVENILmZvckVhY2goZXZlbnQgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGV2ZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2goZXJyKXtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgRElTUEFUQ0guY2xlYXIoKTtcbiAgICB9LCAwKTtcblxuICBESVNQQVRDSC5hZGQoZXZlbnRIYW5kbGVyKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBzaWRlLWVmZmVjdCB3aGljaCB3aWxsIHVwZGF0ZSB3aGVuZXZlciB2YWx1ZXMgYWNjZXNzZWQgY2hhbmdlLlxuICogQ2FsbGJhY2sgaXMgY2FsbGVkIGltbWVkaWF0ZWx5IGFuZCB3aGVuZXZlciB2YWx1ZXMgYXJlIHN0YWxlLlxuICogXG4gKiBAcGFyYW0gdGFyZ2V0IC0gSW5zdGFuY2Ugb2YgTW9kZWwgdG8gb2JzZXJ2ZS5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGludm9rZSB3aGVuIHZhbHVlcyBjaGFuZ2UuXG4gKiBAcGFyYW0gcmVxdWlyZVZhbHVlcyAtIElmIGB0cnVlYCB3aWxsIHRocm93IGlmIGFjY2Vzc2luZyBhIHZhbHVlIHdoaWNoIGlzIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBjcmVhdGVFZmZlY3Q8VCBleHRlbmRzIE9ic2VydmFibGU+KHRhcmdldDogVCwgY2FsbGJhY2s6IEVmZmVjdDxSZXF1aXJlZDxUPj4sIHJlcXVpcmVWYWx1ZXM6IHRydWUpOiAoKSA9PiB2b2lkO1xuZnVuY3Rpb24gY3JlYXRlRWZmZWN0PFQgZXh0ZW5kcyBPYnNlcnZhYmxlPih0YXJnZXQ6IFQsIGNhbGxiYWNrOiBFZmZlY3Q8VD4sIHJlY3Vyc2l2ZT86IGJvb2xlYW4pOiAoKSA9PiB2b2lkO1xuZnVuY3Rpb24gY3JlYXRlRWZmZWN0PFQgZXh0ZW5kcyBPYnNlcnZhYmxlPih0YXJnZXQ6IFQsIGNhbGxiYWNrOiBFZmZlY3Q8VD4sIGFyZ3VtZW50PzogYm9vbGVhbil7XG4gIGxldCB1bnNldDogKCh1cGRhdGU6IGJvb2xlYW4gfCBudWxsKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgbGV0IHJlc2V0OiAoKCkgPT4gdm9pZCkgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gIGZ1bmN0aW9uIGludm9rZSgpe1xuICAgIGxldCBzdGFsZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgIGZ1bmN0aW9uIG9uVXBkYXRlKCkge1xuICAgICAgaWYgKHN0YWxlKVxuICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgc3RhbGUgPSB0cnVlO1xuXG4gICAgICBpZiAocmVzZXQgJiYgdW5zZXQpIHtcbiAgICAgICAgdW5zZXQodHJ1ZSk7XG4gICAgICAgIHVuc2V0ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzZXQ7XG4gICAgfVxuXG4gICAgY29uc3Qgc3Vic2NyaWJlciA9IHRhcmdldFtPYnNlcnZhYmxlXShvblVwZGF0ZSwgYXJndW1lbnQgPT09IHRydWUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGV4aXQgPSBlbnRlcihhcmd1bWVudCA9PT0gZmFsc2UpO1xuICAgICAgY29uc3Qgb3V0cHV0ID0gY2FsbGJhY2suY2FsbChzdWJzY3JpYmVyLCBzdWJzY3JpYmVyKTtcbiAgICAgIGNvbnN0IGZsdXNoID0gZXhpdCgpO1xuXG4gICAgICByZXNldCA9IG91dHB1dCA9PT0gbnVsbCA/IG51bGwgOiBpbnZva2U7XG4gICAgICB1bnNldCA9IGtleSA9PiB7XG4gICAgICAgIGlmKHR5cGVvZiBvdXRwdXQgPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgIG91dHB1dChrZXkpO1xuXG4gICAgICAgIGZsdXNoKCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNhdGNoKGVycil7XG4gICAgICBpZihlcnIgaW5zdGFuY2VvZiBQcm9taXNlKXtcbiAgICAgICAgcmVzZXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGVyci50aGVuKGludm9rZSk7XG4gICAgICB9XG4gICAgICBlbHNlXG4gICAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjbGVhbnVwKCl7XG4gICAgaWYodW5zZXQpXG4gICAgICB1bnNldChmYWxzZSk7XG5cbiAgICByZXNldCA9IG51bGw7XG4gIH07XG5cbiAgaWYoRWZmZWN0Q29udGV4dCAmJiBhcmd1bWVudCAhPT0gZmFsc2UpXG4gICAgRWZmZWN0Q29udGV4dC5hZGQoY2xlYW51cCk7XG5cbiAgYWRkTGlzdGVuZXIodGFyZ2V0LCBrZXkgPT4ge1xuICAgIGlmKGtleSA9PT0gdHJ1ZSlcbiAgICAgIGludm9rZSgpO1xuXG4gICAgZWxzZSBpZighcmVzZXQpXG4gICAgICByZXR1cm4gcmVzZXQ7XG5cbiAgICBpZihrZXkgPT09IG51bGwgJiYgdW5zZXQpXG4gICAgICB1bnNldChudWxsKTtcbiAgfSk7XG4gIFxuICByZXR1cm4gY2xlYW51cDtcbn1cblxubGV0IEVmZmVjdENvbnRleHQ6IFNldDwoKSA9PiB2b2lkPiB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGZ1bmN0aW9uIGVudGVyKGlnbm9yZT86IGJvb2xlYW4pe1xuICBpZihpZ25vcmUpXG4gICAgcmV0dXJuICgpID0+ICgpID0+IHt9O1xuXG4gIGNvbnN0IGxhc3QgPSBFZmZlY3RDb250ZXh0O1xuICBjb25zdCBjb250ZXh0ID0gRWZmZWN0Q29udGV4dCA9IG5ldyBTZXQ7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBFZmZlY3RDb250ZXh0ID0gbGFzdDtcbiAgICByZXR1cm4gKCkgPT4gY29udGV4dC5mb3JFYWNoKGZuID0+IGZuKCkpO1xuICB9XG59XG5cbmV4cG9ydCB7XG4gIGFkZExpc3RlbmVyLFxuICBjcmVhdGVFZmZlY3QsXG4gIGV2ZW50LFxuICBPblVwZGF0ZSxcbiAgUEVORElOR19LRVlTLFxuICBPYnNlcnZhYmxlXG59Il0sCiAgIm1hcHBpbmdzIjogIkFBc0JBLE1BQU0sYUFBYSxPQUFPLFNBQVM7QUFHbkMsTUFBTSxVQUFVLE1BQU07QUFFdEIsTUFBTSxZQUFZLG9CQUFJLFFBQTJEO0FBR2pGLE1BQU0sVUFBVSxvQkFBSSxRQUFnQztBQUdwRCxNQUFNLGVBQWUsb0JBQUksUUFBbUQ7QUFHNUUsTUFBTSxXQUFXLG9CQUFJLElBQWdCO0FBRXJDLFNBQVMsWUFDUCxTQUFZLFVBQXVCLFFBQTRCO0FBRS9ELE1BQUksWUFBWSxVQUFVLElBQUksT0FBTztBQUVyQyxNQUFHLENBQUM7QUFDRixjQUFVLElBQUksU0FBUyxZQUFZLG9CQUFJLElBQUksQ0FBQyxDQUFDLFNBQVMsTUFBUyxDQUFDLENBQUMsQ0FBQztBQUVwRSxNQUFHLFdBQVcsVUFBYSxFQUFFLGtCQUFrQjtBQUM3QyxhQUFTLG9CQUFJLElBQUksQ0FBQyxNQUFNLENBQUM7QUFF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
package/dist/esm/index.js CHANGED
@@ -4,20 +4,21 @@ import { set } from "./instruction/set";
4
4
  import { use } from "./instruction/use";
5
5
  import { has } from "./instruction/has";
6
6
  import { Model, Model as Model2, METHOD } from "./model";
7
- import { createEffect, createProxy, addListener } from "./control";
7
+ import { createEffect, addListener, event, Observable } from "./control";
8
8
  import { Context } from "./context";
9
9
  export {
10
10
  Context,
11
11
  METHOD,
12
12
  Model,
13
+ Observable,
13
14
  addListener,
14
15
  createEffect,
15
- createProxy,
16
16
  Model2 as default,
17
+ event,
17
18
  get,
18
19
  has,
19
20
  ref,
20
21
  set,
21
22
  use
22
23
  };
23
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgeyBnZXQgfSBmcm9tICcuL2luc3RydWN0aW9uL2dldCc7XG5leHBvcnQgeyByZWYgfSBmcm9tICcuL2luc3RydWN0aW9uL3JlZic7XG5leHBvcnQgeyBzZXQgfSBmcm9tICcuL2luc3RydWN0aW9uL3NldCc7XG5leHBvcnQgeyB1c2UgfSBmcm9tICcuL2luc3RydWN0aW9uL3VzZSc7XG5leHBvcnQgeyBoYXMgfSBmcm9tICcuL2luc3RydWN0aW9uL2hhcyc7XG5cbmV4cG9ydCB7IE1vZGVsLCBNb2RlbCBhcyBkZWZhdWx0LCBNRVRIT0QgfSBmcm9tICcuL21vZGVsJztcbmV4cG9ydCB7IGNyZWF0ZUVmZmVjdCwgY3JlYXRlUHJveHksIGFkZExpc3RlbmVyIH0gZnJvbSAnLi9jb250cm9sJztcbmV4cG9ydCB7IENvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnOyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsV0FBVztBQUNwQixTQUFTLFdBQVc7QUFDcEIsU0FBUyxXQUFXO0FBQ3BCLFNBQVMsV0FBVztBQUNwQixTQUFTLFdBQVc7QUFFcEIsU0FBUyxPQUFnQixTQUFUQSxRQUFrQixjQUFjO0FBQ2hELFNBQVMsY0FBYyxhQUFhLG1CQUFtQjtBQUN2RCxTQUFTLGVBQWU7IiwKICAibmFtZXMiOiBbIk1vZGVsIl0KfQo=
24
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgeyBnZXQgfSBmcm9tICcuL2luc3RydWN0aW9uL2dldCc7XG5leHBvcnQgeyByZWYgfSBmcm9tICcuL2luc3RydWN0aW9uL3JlZic7XG5leHBvcnQgeyBzZXQgfSBmcm9tICcuL2luc3RydWN0aW9uL3NldCc7XG5leHBvcnQgeyB1c2UgfSBmcm9tICcuL2luc3RydWN0aW9uL3VzZSc7XG5leHBvcnQgeyBoYXMgfSBmcm9tICcuL2luc3RydWN0aW9uL2hhcyc7XG5cbmV4cG9ydCB7IE1vZGVsLCBNb2RlbCBhcyBkZWZhdWx0LCBNRVRIT0QgfSBmcm9tICcuL21vZGVsJztcbmV4cG9ydCB7IGNyZWF0ZUVmZmVjdCwgYWRkTGlzdGVuZXIsIGV2ZW50LCBPYnNlcnZhYmxlIH0gZnJvbSAnLi9jb250cm9sJztcbmV4cG9ydCB7IENvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnOyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsV0FBVztBQUNwQixTQUFTLFdBQVc7QUFDcEIsU0FBUyxXQUFXO0FBQ3BCLFNBQVMsV0FBVztBQUNwQixTQUFTLFdBQVc7QUFFcEIsU0FBUyxPQUFnQixTQUFUQSxRQUFrQixjQUFjO0FBQ2hELFNBQVMsY0FBYyxhQUFhLE9BQU8sa0JBQWtCO0FBQzdELFNBQVMsZUFBZTsiLAogICJuYW1lcyI6IFsiTW9kZWwiXQp9Cg==
@@ -1,4 +1,4 @@
1
- import { context } from "../control";
1
+ import { enter } from "../control";
2
2
  import { Context } from "../context";
3
3
  import { Model, update } from "../model";
4
4
  import { use } from "./use";
@@ -12,27 +12,31 @@ function has(arg1, arg2) {
12
12
  if (Model.is(arg1))
13
13
  Context.get(subject, (ctx) => {
14
14
  ctx.has(arg1, (model) => {
15
- const ctx2 = context();
16
15
  let remove;
17
16
  let disconnect;
17
+ let flush;
18
18
  if (applied.has(model))
19
19
  return;
20
- const notify = APPLY.get(model);
21
- if (notify) {
22
- const after = notify(subject);
23
- if (after === false)
24
- return;
25
- if (typeof after == "function")
26
- disconnect = after;
20
+ const exit = enter();
21
+ try {
22
+ const notify = APPLY.get(model);
23
+ if (notify) {
24
+ const after = notify(subject);
25
+ if (after === false)
26
+ return;
27
+ if (typeof after == "function")
28
+ disconnect = after;
29
+ }
30
+ if (typeof arg2 == "function") {
31
+ const done2 = arg2(model, subject);
32
+ if (done2 === false)
33
+ return false;
34
+ if (typeof done2 == "function")
35
+ remove = done2;
36
+ }
37
+ } finally {
38
+ flush = exit();
27
39
  }
28
- if (typeof arg2 == "function") {
29
- const done2 = arg2(model, subject);
30
- if (done2 === false)
31
- return false;
32
- if (typeof done2 == "function")
33
- remove = done2;
34
- }
35
- const flush = ctx2();
36
40
  applied.add(model);
37
41
  reset();
38
42
  const done = () => {
@@ -46,7 +50,7 @@ function has(arg1, arg2) {
46
50
  remove();
47
51
  remove = void 0;
48
52
  };
49
- const ignore = model.set(null, done);
53
+ const ignore = model.set(done, null);
50
54
  return done;
51
55
  });
52
56
  });
@@ -76,4 +80,4 @@ function has(arg1, arg2) {
76
80
  export {
77
81
  has
78
82
  };
79
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL2hhcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgY29udGV4dCB9IGZyb20gJy4uL2NvbnRyb2wnO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJy4uL2NvbnRleHQnO1xuaW1wb3J0IHsgTW9kZWwsIHVwZGF0ZSB9IGZyb20gJy4uL21vZGVsJztcbmltcG9ydCB7IHVzZSB9IGZyb20gJy4vdXNlJztcblxuY29uc3QgQVBQTFkgPSBuZXcgV2Vha01hcDxNb2RlbCwgKG1vZGVsOiBNb2RlbCkgPT4gKCgpID0+IHZvaWQpIHwgYm9vbGVhbiB8IHZvaWQ+KCk7XG5cbmRlY2xhcmUgbmFtZXNwYWNlIGhhcyB7XG4gIHR5cGUgQ2FsbGJhY2s8VCA9IGFueT4gPSAobW9kZWw6IFQsIHJlY2lwaWVudDogTW9kZWwpID0+IHZvaWQgfCBib29sZWFuIHwgKCgpID0+IHZvaWQpO1xufVxuXG5mdW5jdGlvbiBoYXMgPFQgZXh0ZW5kcyBNb2RlbD4gKHR5cGU6IE1vZGVsLlR5cGU8VD4sIGNhbGxiYWNrPzogaGFzLkNhbGxiYWNrPFQ+KTogcmVhZG9ubHkgVFtdO1xuZnVuY3Rpb24gaGFzIChjYWxsYmFjaz86IGhhcy5DYWxsYmFjayk6IHJlYWRvbmx5IE1vZGVsW107XG4gIFxuZnVuY3Rpb24gaGFzIDxUIGV4dGVuZHMgTW9kZWw+IChcbiAgYXJnMT86IE1vZGVsLlR5cGU8VD4gfCBoYXMuQ2FsbGJhY2s8TW9kZWw+LFxuICBhcmcyPzogaGFzLkNhbGxiYWNrPFQ+KXtcblxuICByZXR1cm4gdXNlPFRbXT4oKGtleSwgc3ViamVjdCkgPT4ge1xuICAgIGNvbnN0IGFwcGxpZWQgPSBuZXcgU2V0PE1vZGVsPigpO1xuICAgIGNvbnN0IHJlc2V0ID0gKCkgPT4ge1xuICAgICAgdXBkYXRlKHN1YmplY3QsIGtleSwgT2JqZWN0LmZyZWV6ZShBcnJheS5mcm9tKGFwcGxpZWQpKSk7XG4gICAgfVxuXG4gICAgaWYoTW9kZWwuaXMoYXJnMSkpXG4gICAgICBDb250ZXh0LmdldChzdWJqZWN0LCBjdHggPT4ge1xuICAgICAgICBjdHguaGFzKGFyZzEsIG1vZGVsID0+IHtcbiAgICAgICAgICBjb25zdCBjdHggPSBjb250ZXh0KCk7XG4gICAgICAgICAgbGV0IHJlbW92ZTogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGxldCBkaXNjb25uZWN0OiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gIFxuICAgICAgICAgIGlmKGFwcGxpZWQuaGFzKG1vZGVsKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBcbiAgICAgICAgICBjb25zdCBub3RpZnkgPSBBUFBMWS5nZXQobW9kZWwpO1xuICBcbiAgICAgICAgICBpZihub3RpZnkpe1xuICAgICAgICAgICAgY29uc3QgYWZ0ZXIgPSBub3RpZnkoc3ViamVjdCk7XG4gIFxuICAgICAgICAgICAgaWYoYWZ0ZXIgPT09IGZhbHNlKVxuICAgICAgICAgICAgICByZXR1cm47XG4gIFxuICAgICAgICAgICAgaWYodHlwZW9mIGFmdGVyID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgICAgZGlzY29ubmVjdCA9IGFmdGVyO1xuICAgICAgICAgIH1cbiAgXG4gICAgICAgICAgaWYodHlwZW9mIGFyZzIgPT0gXCJmdW5jdGlvblwiKXtcbiAgICAgICAgICAgIGNvbnN0IGRvbmUgPSBhcmcyKG1vZGVsLCBzdWJqZWN0KTtcbiAgXG4gICAgICAgICAgICBpZihkb25lID09PSBmYWxzZSlcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgICAgICBpZih0eXBlb2YgZG9uZSA9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgICAgIHJlbW92ZSA9IGRvbmU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZmx1c2ggPSBjdHgoKTtcbiAgXG4gICAgICAgICAgYXBwbGllZC5hZGQobW9kZWwpO1xuICAgICAgICAgIHJlc2V0KCk7XG4gIFxuICAgICAgICAgIGNvbnN0IGRvbmUgPSAoKSA9PiB7IFxuICAgICAgICAgICAgZmx1c2goKTtcbiAgICAgICAgICAgIGlnbm9yZSgpO1xuICBcbiAgICAgICAgICAgIGFwcGxpZWQuZGVsZXRlKG1vZGVsKTtcbiAgICAgICAgICAgIHJlc2V0KCk7XG4gIFxuICAgICAgICAgICAgaWYoZGlzY29ubmVjdClcbiAgICAgICAgICAgICAgZGlzY29ubmVjdCgpO1xuICBcbiAgICAgICAgICAgIGlmKHR5cGVvZiByZW1vdmUgPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgICByZW1vdmUoKTtcblxuICAgICAgICAgICAgcmVtb3ZlID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgXG4gICAgICAgICAgY29uc3QgaWdub3JlID0gbW9kZWwuc2V0KG51bGwsIGRvbmUpO1xuICAgICAgICAgIFxuICAgICAgICAgIHJldHVybiBkb25lO1xuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgZWxzZSB7XG4gICAgICBpZihBUFBMWS5oYXMoc3ViamVjdCkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJ2hhcycgY2FsbGJhY2sgY2FuIG9ubHkgYmUgdXNlZCBvbmNlIHBlciBtb2RlbC5gKTtcblxuICAgICAgQVBQTFkuc2V0KHN1YmplY3QsIHJlY2lwaWVudCA9PiB7XG4gICAgICAgIGxldCByZW1vdmU6ICgoKSA9PiB2b2lkKSB8IGJvb2xlYW4gfCB2b2lkO1xuXG4gICAgICAgIGlmKGFyZzEpe1xuICAgICAgICAgIHJlbW92ZSA9IGFyZzEocmVjaXBpZW50LCBzdWJqZWN0KTtcbiAgXG4gICAgICAgICAgaWYocmVtb3ZlID09PSBmYWxzZSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFwcGxpZWQuYWRkKHJlY2lwaWVudCk7XG4gICAgICAgIHJlc2V0KCk7XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICBhcHBsaWVkLmRlbGV0ZShyZWNpcGllbnQpO1xuICAgICAgICAgIHJlc2V0KCk7XG5cbiAgICAgICAgICBpZih0eXBlb2YgcmVtb3ZlID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgIHJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4geyB2YWx1ZTogW10gfTtcbiAgfSlcbn1cblxuZXhwb3J0IHsgaGFzIH0iXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLGVBQWU7QUFDeEIsU0FBUyxlQUFlO0FBQ3hCLFNBQVMsT0FBTyxjQUFjO0FBQzlCLFNBQVMsV0FBVztBQUVwQixNQUFNLFFBQVEsb0JBQUksUUFBZ0U7QUFTbEYsU0FBUyxJQUNQLE1BQ0EsTUFBdUI7QUFFdkIsU0FBTyxJQUFTLENBQUMsS0FBSyxZQUFZO0FBQ2hDLFVBQU0sVUFBVSxvQkFBSSxJQUFXO0FBQy9CLFVBQU0sUUFBUSxNQUFNO0FBQ2xCLGFBQU8sU0FBUyxLQUFLLE9BQU8sT0FBTyxNQUFNLEtBQUssT0FBTyxDQUFDLENBQUM7QUFBQSxJQUN6RDtBQUVBLFFBQUcsTUFBTSxHQUFHLElBQUk7QUFDZCxjQUFRLElBQUksU0FBUyxTQUFPO0FBQzFCLFlBQUksSUFBSSxNQUFNLFdBQVM7QUFDckIsZ0JBQU1BLE9BQU0sUUFBUTtBQUNwQixjQUFJO0FBQ0osY0FBSTtBQUVKLGNBQUcsUUFBUSxJQUFJLEtBQUs7QUFDbEI7QUFFRixnQkFBTSxTQUFTLE1BQU0sSUFBSSxLQUFLO0FBRTlCLGNBQUcsUUFBTztBQUNSLGtCQUFNLFFBQVEsT0FBTyxPQUFPO0FBRTVCLGdCQUFHLFVBQVU7QUFDWDtBQUVGLGdCQUFHLE9BQU8sU0FBUztBQUNqQiwyQkFBYTtBQUFBLFVBQ2pCO0FBRUEsY0FBRyxPQUFPLFFBQVEsWUFBVztBQUMzQixrQkFBTUMsUUFBTyxLQUFLLE9BQU8sT0FBTztBQUVoQyxnQkFBR0EsVUFBUztBQUNWLHFCQUFPO0FBRVQsZ0JBQUcsT0FBT0EsU0FBUTtBQUNoQix1QkFBU0E7QUFBQSxVQUNiO0FBRUEsZ0JBQU0sUUFBUUQsS0FBSTtBQUVsQixrQkFBUSxJQUFJLEtBQUs7QUFDakIsZ0JBQU07QUFFTixnQkFBTSxPQUFPLE1BQU07QUFDakIsa0JBQU07QUFDTixtQkFBTztBQUVQLG9CQUFRLE9BQU8sS0FBSztBQUNwQixrQkFBTTtBQUVOLGdCQUFHO0FBQ0QseUJBQVc7QUFFYixnQkFBRyxPQUFPLFVBQVU7QUFDbEIscUJBQU87QUFFVCxxQkFBUztBQUFBLFVBQ1g7QUFFQSxnQkFBTSxTQUFTLE1BQU0sSUFBSSxNQUFNLElBQUk7QUFFbkMsaUJBQU87QUFBQSxRQUNULENBQUM7QUFBQSxNQUNILENBQUM7QUFBQSxTQUNFO0FBQ0gsVUFBRyxNQUFNLElBQUksT0FBTztBQUNsQixjQUFNLElBQUksTUFBTSxpREFBaUQ7QUFFbkUsWUFBTSxJQUFJLFNBQVMsZUFBYTtBQUM5QixZQUFJO0FBRUosWUFBRyxNQUFLO0FBQ04sbUJBQVMsS0FBSyxXQUFXLE9BQU87QUFFaEMsY0FBRyxXQUFXO0FBQ1osbUJBQU87QUFBQSxRQUNYO0FBRUEsZ0JBQVEsSUFBSSxTQUFTO0FBQ3JCLGNBQU07QUFFTixlQUFPLE1BQU07QUFDWCxrQkFBUSxPQUFPLFNBQVM7QUFDeEIsZ0JBQU07QUFFTixjQUFHLE9BQU8sVUFBVTtBQUNsQixtQkFBTztBQUFBLFFBQ1g7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNIO0FBRUEsV0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFO0FBQUEsRUFDckIsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogWyJjdHgiLCAiZG9uZSJdCn0K
83
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL2hhcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgZW50ZXIgfSBmcm9tICcuLi9jb250cm9sJztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0JztcbmltcG9ydCB7IE1vZGVsLCB1cGRhdGUgfSBmcm9tICcuLi9tb2RlbCc7XG5pbXBvcnQgeyB1c2UgfSBmcm9tICcuL3VzZSc7XG5cbmNvbnN0IEFQUExZID0gbmV3IFdlYWtNYXA8TW9kZWwsIChtb2RlbDogTW9kZWwpID0+ICgoKSA9PiB2b2lkKSB8IGJvb2xlYW4gfCB2b2lkPigpO1xuXG5kZWNsYXJlIG5hbWVzcGFjZSBoYXMge1xuICB0eXBlIENhbGxiYWNrPFQgPSBhbnk+ID0gKG1vZGVsOiBULCByZWNpcGllbnQ6IE1vZGVsKSA9PiB2b2lkIHwgYm9vbGVhbiB8ICgoKSA9PiB2b2lkKTtcbn1cblxuZnVuY3Rpb24gaGFzIDxUIGV4dGVuZHMgTW9kZWw+ICh0eXBlOiBNb2RlbC5UeXBlPFQ+LCBjYWxsYmFjaz86IGhhcy5DYWxsYmFjazxUPik6IHJlYWRvbmx5IFRbXTtcbmZ1bmN0aW9uIGhhcyAoY2FsbGJhY2s/OiBoYXMuQ2FsbGJhY2spOiByZWFkb25seSBNb2RlbFtdO1xuICBcbmZ1bmN0aW9uIGhhcyA8VCBleHRlbmRzIE1vZGVsPiAoXG4gIGFyZzE/OiBNb2RlbC5UeXBlPFQ+IHwgaGFzLkNhbGxiYWNrPE1vZGVsPixcbiAgYXJnMj86IGhhcy5DYWxsYmFjazxUPil7XG5cbiAgcmV0dXJuIHVzZTxUW10+KChrZXksIHN1YmplY3QpID0+IHtcbiAgICBjb25zdCBhcHBsaWVkID0gbmV3IFNldDxNb2RlbD4oKTtcbiAgICBjb25zdCByZXNldCA9ICgpID0+IHtcbiAgICAgIHVwZGF0ZShzdWJqZWN0LCBrZXksIE9iamVjdC5mcmVlemUoQXJyYXkuZnJvbShhcHBsaWVkKSkpO1xuICAgIH1cblxuICAgIGlmKE1vZGVsLmlzKGFyZzEpKVxuICAgICAgQ29udGV4dC5nZXQoc3ViamVjdCwgY3R4ID0+IHtcbiAgICAgICAgY3R4LmhhcyhhcmcxLCBtb2RlbCA9PiB7XG4gICAgICAgICAgbGV0IHJlbW92ZTogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGxldCBkaXNjb25uZWN0OiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgbGV0IGZsdXNoOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gIFxuICAgICAgICAgIGlmKGFwcGxpZWQuaGFzKG1vZGVsKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBcbiAgICAgICAgICBjb25zdCBleGl0ID0gZW50ZXIoKTtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBub3RpZnkgPSBBUFBMWS5nZXQobW9kZWwpO1xuXG4gICAgICAgICAgICBpZihub3RpZnkpe1xuICAgICAgICAgICAgICBjb25zdCBhZnRlciA9IG5vdGlmeShzdWJqZWN0KTtcbiAgICBcbiAgICAgICAgICAgICAgaWYoYWZ0ZXIgPT09IGZhbHNlKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICBcbiAgICAgICAgICAgICAgaWYodHlwZW9mIGFmdGVyID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgICAgICBkaXNjb25uZWN0ID0gYWZ0ZXI7XG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICBpZih0eXBlb2YgYXJnMiA9PSBcImZ1bmN0aW9uXCIpe1xuICAgICAgICAgICAgICBjb25zdCBkb25lID0gYXJnMihtb2RlbCwgc3ViamVjdCk7XG4gICAgXG4gICAgICAgICAgICAgIGlmKGRvbmUgPT09IGZhbHNlKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgICAgICAgICBpZih0eXBlb2YgZG9uZSA9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgICAgICAgcmVtb3ZlID0gZG9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBmbHVzaCA9IGV4aXQoKTtcbiAgICAgICAgICB9XG4gIFxuICAgICAgICAgIGFwcGxpZWQuYWRkKG1vZGVsKTtcbiAgICAgICAgICByZXNldCgpO1xuICBcbiAgICAgICAgICBjb25zdCBkb25lID0gKCkgPT4geyBcbiAgICAgICAgICAgIGZsdXNoKCk7XG4gICAgICAgICAgICBpZ25vcmUoKTtcbiAgXG4gICAgICAgICAgICBhcHBsaWVkLmRlbGV0ZShtb2RlbCk7XG4gICAgICAgICAgICByZXNldCgpO1xuICBcbiAgICAgICAgICAgIGlmKGRpc2Nvbm5lY3QpXG4gICAgICAgICAgICAgIGRpc2Nvbm5lY3QoKTtcbiAgXG4gICAgICAgICAgICBpZih0eXBlb2YgcmVtb3ZlID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgICAgcmVtb3ZlKCk7XG5cbiAgICAgICAgICAgIHJlbW92ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gIFxuICAgICAgICAgIGNvbnN0IGlnbm9yZSA9IG1vZGVsLnNldChkb25lLCBudWxsKTtcbiAgICAgICAgICBcbiAgICAgICAgICByZXR1cm4gZG9uZTtcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIGVsc2Uge1xuICAgICAgaWYoQVBQTFkuaGFzKHN1YmplY3QpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCdoYXMnIGNhbGxiYWNrIGNhbiBvbmx5IGJlIHVzZWQgb25jZSBwZXIgbW9kZWwuYCk7XG5cbiAgICAgIEFQUExZLnNldChzdWJqZWN0LCByZWNpcGllbnQgPT4ge1xuICAgICAgICBsZXQgcmVtb3ZlOiAoKCkgPT4gdm9pZCkgfCBib29sZWFuIHwgdm9pZDtcblxuICAgICAgICBpZihhcmcxKXtcbiAgICAgICAgICByZW1vdmUgPSBhcmcxKHJlY2lwaWVudCwgc3ViamVjdCk7XG4gIFxuICAgICAgICAgIGlmKHJlbW92ZSA9PT0gZmFsc2UpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBhcHBsaWVkLmFkZChyZWNpcGllbnQpO1xuICAgICAgICByZXNldCgpO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgYXBwbGllZC5kZWxldGUocmVjaXBpZW50KTtcbiAgICAgICAgICByZXNldCgpO1xuXG4gICAgICAgICAgaWYodHlwZW9mIHJlbW92ZSA9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgICByZW1vdmUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgdmFsdWU6IFtdIH07XG4gIH0pXG59XG5cbmV4cG9ydCB7IGhhcyB9Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxhQUFhO0FBQ3RCLFNBQVMsZUFBZTtBQUN4QixTQUFTLE9BQU8sY0FBYztBQUM5QixTQUFTLFdBQVc7QUFFcEIsTUFBTSxRQUFRLG9CQUFJLFFBQWdFO0FBU2xGLFNBQVMsSUFDUCxNQUNBLE1BQXVCO0FBRXZCLFNBQU8sSUFBUyxDQUFDLEtBQUssWUFBWTtBQUNoQyxVQUFNLFVBQVUsb0JBQUksSUFBVztBQUMvQixVQUFNLFFBQVEsTUFBTTtBQUNsQixhQUFPLFNBQVMsS0FBSyxPQUFPLE9BQU8sTUFBTSxLQUFLLE9BQU8sQ0FBQyxDQUFDO0FBQUEsSUFDekQ7QUFFQSxRQUFHLE1BQU0sR0FBRyxJQUFJO0FBQ2QsY0FBUSxJQUFJLFNBQVMsU0FBTztBQUMxQixZQUFJLElBQUksTUFBTSxXQUFTO0FBQ3JCLGNBQUk7QUFDSixjQUFJO0FBQ0osY0FBSTtBQUVKLGNBQUcsUUFBUSxJQUFJLEtBQUs7QUFDbEI7QUFFRixnQkFBTSxPQUFPLE1BQU07QUFFbkIsY0FBSTtBQUNGLGtCQUFNLFNBQVMsTUFBTSxJQUFJLEtBQUs7QUFFOUIsZ0JBQUcsUUFBTztBQUNSLG9CQUFNLFFBQVEsT0FBTyxPQUFPO0FBRTVCLGtCQUFHLFVBQVU7QUFDWDtBQUVGLGtCQUFHLE9BQU8sU0FBUztBQUNqQiw2QkFBYTtBQUFBLFlBQ2pCO0FBRUEsZ0JBQUcsT0FBTyxRQUFRLFlBQVc7QUFDM0Isb0JBQU1BLFFBQU8sS0FBSyxPQUFPLE9BQU87QUFFaEMsa0JBQUdBLFVBQVM7QUFDVix1QkFBTztBQUVULGtCQUFHLE9BQU9BLFNBQVE7QUFDaEIseUJBQVNBO0FBQUEsWUFDYjtBQUFBLFVBQ0YsVUFDQTtBQUNFLG9CQUFRLEtBQUs7QUFBQSxVQUNmO0FBRUEsa0JBQVEsSUFBSSxLQUFLO0FBQ2pCLGdCQUFNO0FBRU4sZ0JBQU0sT0FBTyxNQUFNO0FBQ2pCLGtCQUFNO0FBQ04sbUJBQU87QUFFUCxvQkFBUSxPQUFPLEtBQUs7QUFDcEIsa0JBQU07QUFFTixnQkFBRztBQUNELHlCQUFXO0FBRWIsZ0JBQUcsT0FBTyxVQUFVO0FBQ2xCLHFCQUFPO0FBRVQscUJBQVM7QUFBQSxVQUNYO0FBRUEsZ0JBQU0sU0FBUyxNQUFNLElBQUksTUFBTSxJQUFJO0FBRW5DLGlCQUFPO0FBQUEsUUFDVCxDQUFDO0FBQUEsTUFDSCxDQUFDO0FBQUEsU0FDRTtBQUNILFVBQUcsTUFBTSxJQUFJLE9BQU87QUFDbEIsY0FBTSxJQUFJLE1BQU0saURBQWlEO0FBRW5FLFlBQU0sSUFBSSxTQUFTLGVBQWE7QUFDOUIsWUFBSTtBQUVKLFlBQUcsTUFBSztBQUNOLG1CQUFTLEtBQUssV0FBVyxPQUFPO0FBRWhDLGNBQUcsV0FBVztBQUNaLG1CQUFPO0FBQUEsUUFDWDtBQUVBLGdCQUFRLElBQUksU0FBUztBQUNyQixjQUFNO0FBRU4sZUFBTyxNQUFNO0FBQ1gsa0JBQVEsT0FBTyxTQUFTO0FBQ3hCLGdCQUFNO0FBRU4sY0FBRyxPQUFPLFVBQVU7QUFDbEIsbUJBQU87QUFBQSxRQUNYO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSDtBQUVBLFdBQU8sRUFBRSxPQUFPLENBQUMsRUFBRTtBQUFBLEVBQ3JCLENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFsiZG9uZSJdCn0K
@@ -1,4 +1,4 @@
1
- import { addListener, context } from "../control";
1
+ import { addListener, enter } from "../control";
2
2
  import { update } from "../model";
3
3
  import { use } from "./use";
4
4
  const { defineProperty, defineProperties } = Object;
@@ -42,9 +42,9 @@ function ref(arg, arg2) {
42
42
  unset = void unset(value2);
43
43
  if (value2 === null && arg2 !== false)
44
44
  return;
45
- const ctx = context();
45
+ const exit = enter();
46
46
  const out = arg.call(subject, value2);
47
- const flush = ctx();
47
+ const flush = exit();
48
48
  unset = (key2) => {
49
49
  if (typeof out == "function")
50
50
  out(key2);
@@ -63,4 +63,4 @@ function ref(arg, arg2) {
63
63
  export {
64
64
  ref
65
65
  };
66
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL3JlZi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgYWRkTGlzdGVuZXIsIGNvbnRleHQgfSBmcm9tICcuLi9jb250cm9sJztcbmltcG9ydCB7IE1vZGVsLCB1cGRhdGUgfSBmcm9tICcuLi9tb2RlbCc7XG5pbXBvcnQgeyB1c2UgfSBmcm9tICcuL3VzZSc7XG5cbmNvbnN0IHsgZGVmaW5lUHJvcGVydHksIGRlZmluZVByb3BlcnRpZXMgfSA9IE9iamVjdDtcblxuZGVjbGFyZSBuYW1lc3BhY2UgcmVmIHtcbiAgdHlwZSBDYWxsYmFjazxUPiA9IChhcmd1bWVudDogVCkgPT5cbiAgICAoKG5leHQ6IFQgfCBudWxsKSA9PiB2b2lkKSB8IFByb21pc2U8dm9pZD4gfCB2b2lkIHwgYm9vbGVhbjtcblxuICBpbnRlcmZhY2UgT2JqZWN0PFQgPSBhbnk+IHtcbiAgICAobmV4dDogVCB8IG51bGwpOiB2b2lkO1xuXG4gICAgLyoqIEN1cnJlbnQgdmFsdWUgaGVsZCBieSB0aGlzIHJlZmVyZW5jZS4gKi9cbiAgICBjdXJyZW50OiBUIHwgbnVsbDtcblxuICAgIC8qKiBcbiAgICAgKiBTdWJzY3JpYmUgdG8gY2hhbmdlcyBvZiB0aGlzIHJlZmVyZW5jZS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byBpbnZva2Ugd2l0aCB0aGUgY3VycmVudCB2YWx1ZSB3aGVuIGl0IGNoYW5nZXMuXG4gICAgICogQHJldHVybnMgVW5zdWJzY3JpYmUgZnVuY3Rpb24gdG8gc3RvcCBsaXN0ZW5pbmcgdG8gY2hhbmdlcy5cbiAgICAgKi9cbiAgICBnZXQoY2FsbGJhY2s6ICh2YWx1ZTogVCkgPT4gdm9pZCk6ICgpID0+IHZvaWQ7XG5cbiAgICAvKiogUmV0cmlldmUgY3VycmVudCB2YWx1ZS4gKi9cbiAgICBnZXQoKTogVCB8IG51bGw7XG4gIH1cblxuICAvKiogT2JqZWN0IHdpdGggcmVmZXJlbmNlcyB0byBhbGwgbWFuYWdlZCB2YWx1ZXMgb2YgYFRgLiAqL1xuXG4gIC8qKiBPYmplY3Qgd2l0aCByZWZlcmVuY2VzIHRvIGFsbCBtYW5hZ2VkIHZhbHVlcyBvZiBgVGAuICovXG4gIHR5cGUgUHJveHk8VCBleHRlbmRzIE1vZGVsPiA9XG4gICAgJiB7IFtQIGluIE1vZGVsLkZpZWxkPFQ+XS0/OiBPYmplY3Q8VFtQXT4gfVxuICAgICYgeyBnZXQoKTogVCB9O1xuXG4gIHR5cGUgQ3VzdG9tUHJveHk8VCBleHRlbmRzIE1vZGVsLCBSPiA9XG4gICAgJiB7IFtQIGluIE1vZGVsLkZpZWxkPFQ+XS0/OiBSIH1cbiAgICAmIHsgZ2V0KCk6IFQgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCB3aXRoIHJlZmVyZW5jZXMgdG8gYWxsIG1hbmFnZWQgdmFsdWVzLlxuICogRWFjaCBwcm9wZXJ0eSBpcyBhIGZ1bmN0aW9uIHRvIHNldCB2YWx1ZSBpbiBzdGF0ZSB3aGVuIGludm9rZWQuXG4gKlxuICogKlByb3BlcnRpZXMgYXJlIHNpbXVsdGFuZW91c2x5IGEgcmVmLWZ1bmN0aW9uIGFuZCByZWYtb2JqZWN0LCB1c2UgYXMgbmVlZGVkLipcbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gU291cmNlIG1vZGVsIGZyb20gd2hpY2ggdG8gcmVmZXJlbmNlIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gcmVmIDxUIGV4dGVuZHMgTW9kZWw+ICh0YXJnZXQ6IFQpOiByZWYuUHJveHk8VD47XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB2YWx1ZXMgYmFzZWQgb24gbWFuYWdlZCB2YWx1ZXMuXG4gKiBFYWNoIHByb3BlcnR5IHdpbGwgaW52b2tlIG1hcHBlciBmdW5jdGlvbiBvbiBmaXJzdCBhY2Nlc3Mgc3VwcGx5XG4gKiB0aGUgaXRzIHJldHVybiB2YWx1ZSBnb2luZyBmb3J3YXJkLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBTb3VyY2UgbW9kZWwgZnJvbSB3aGljaCB0byByZWZlcmVuY2UgdmFsdWVzLlxuICogQHBhcmFtIG1hcHBlciAtIEZ1bmN0aW9uIHByb2R1Y2luZyB0aGUgcGxhY2Vob2xkZXIgdmFsdWUgZm9yIGFueSBnaXZlbiBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gcmVmIDxPIGV4dGVuZHMgTW9kZWwsIFI+XG4gICh0YXJnZXQ6IE8sIG1hcHBlcjogKGtleTogTW9kZWwuRmllbGQ8Tz4pID0+IFIpOiByZWYuQ3VzdG9tUHJveHk8TywgUj47XG5cbi8qKlxuICogQ3JlYXRlcyBhIHJlZi1jb21wYXRpYmxlIHByb3BlcnR5LlxuICogV2lsbCBwZXJzaXN0IHZhbHVlLCBhbmQgdXBkYXRlcyB0byB0aGlzIGFyZSBtYWRlIHBhcnQgb2YgY29udHJvbGxlciBldmVudC1zdHJlYW0uXG4gKlxuICogKk91dHB1dCBpcyBzaW11bHRhbmVvdXNseSBhIHJlZi1mdW5jdGlvbiBhbmQgcmVmLW9iamVjdCwgdXNlIGFzIG5lZWRlZC4qXG4gKlxuICogQHBhcmFtIGNhbGxiYWNrIC0gT3B0aW9uYWwgY2FsbGJhY2sgdG8gc3luY2hyb25vdXNseSBmaXJlIHdoZW4gcmVmZXJlbmNlIGlzIGZpcnN0IHNldCBvciBkb2VzIHVwZGF0ZS5cbiAqL1xuZnVuY3Rpb24gcmVmIDxUPiAoY2FsbGJhY2s/OiByZWYuQ2FsbGJhY2s8VD4pOiByZWYuT2JqZWN0PFQ+O1xuXG4vKipcbiAqIENyZWF0ZXMgYSByZWYtY29tcGF0aWJsZSBwcm9wZXJ0eS5cbiAqIFdpbGwgcGVyc2lzdCB2YWx1ZSwgYW5kIHVwZGF0ZXMgdG8gdGhpcyBhcmUgbWFkZSBwYXJ0IG9mIGNvbnRyb2xsZXIgZXZlbnQtc3RyZWFtLlxuICpcbiAqICpPdXRwdXQgaXMgc2ltdWx0YW5lb3VzbHkgYSByZWYtZnVuY3Rpb24gYW5kIHJlZi1vYmplY3QsIHVzZSBhcyBuZWVkZWQuKlxuICpcbiAqIEBwYXJhbSBjYWxsYmFjayAtIE9wdGlvbmFsIGNhbGxiYWNrIHRvIHN5bmNocm9ub3VzbHkgZmlyZSB3aGVuIHJlZmVyZW5jZSBpcyBmaXJzdCBzZXQgb3IgZG9lcyB1cGRhdGUuXG4gKiBAcGFyYW0gaWdub3JlTnVsbCAtIERlZmF1bHQgYHRydWVgLiBJZiBgZmFsc2VgLCB3aWxsIHN0aWxsIGNhbGxiYWNrIHdpdGggYG51bGxgLlxuICovXG5mdW5jdGlvbiByZWYgPFQ+IChjYWxsYmFjazogcmVmLkNhbGxiYWNrPFQgfCBudWxsPiwgaWdub3JlTnVsbDogYm9vbGVhbik6IHJlZi5PYmplY3Q8VD47XG5cbmZ1bmN0aW9uIHJlZjxUPihcbiAgYXJnPzogcmVmLkNhbGxiYWNrPFQ+IHwgTW9kZWwsXG4gIGFyZzI/OiAoKGtleTogc3RyaW5nKSA9PiBhbnkpIHwgYm9vbGVhbil7XG5cbiAgcmV0dXJuIHVzZTxUPigoa2V5LCBzdWJqZWN0LCBzdGF0ZSkgPT4ge1xuICAgIGxldCB2YWx1ZSA9IHt9O1xuICAgIGNvbnN0IG1ldGhvZCA9IChrZXk6IHN0cmluZykgPT5cbiAgICAgIChjYWxsYmFjaz86ICh2YWx1ZTogVCkgPT4gdm9pZCkgPT4gY2FsbGJhY2tcbiAgICAgICAgPyBhZGRMaXN0ZW5lcihzdWJqZWN0LCAoKSA9PiBjYWxsYmFjayhzdGF0ZVtrZXldKSwga2V5KVxuICAgICAgICA6IHN0YXRlW2tleV07XG5cbiAgICBpZihhcmcgPT09IHN1YmplY3QpXG4gICAgICBzdWJqZWN0LmdldCgoKSA9PiB7XG4gICAgICAgIGZvcihjb25zdCBrZXkgaW4gc3RhdGUpXG4gICAgICAgICAgaWYodHlwZW9mIGFyZzIgPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgZGVmaW5lUHJvcGVydHkodmFsdWUsIGtleSwge1xuICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICAgIGdldCgpe1xuICAgICAgICAgICAgICAgIGNvbnN0IG91dCA9IGFyZzIoa2V5KTtcbiAgICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwga2V5LCB7IHZhbHVlOiBvdXQgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGdldCA9IG1ldGhvZChrZXkpO1xuICAgICAgICAgICAgY29uc3Qgc2V0ID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgIHVwZGF0ZShzdWJqZWN0LCBrZXksIHZhbHVlKVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZGVmaW5lUHJvcGVydGllcyhzZXQsIHtcbiAgICAgICAgICAgICAgY3VycmVudDogeyBnZXQsIHNldCB9LFxuICAgICAgICAgICAgICBnZXQ6IHsgdmFsdWU6IGdldCB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZGVmaW5lUHJvcGVydHkodmFsdWUsIGtleSwgeyB2YWx1ZTogc2V0IH0pO1xuICAgICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICBlbHNlIGlmKHR5cGVvZiBhcmcgPT0gXCJvYmplY3RcIilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInJlZiBpbnN0cnVjdGlvbiBkb2VzIG5vdCBzdXBwb3J0IG9iamVjdCB3aGljaCBpcyBub3QgJ3RoaXMnXCIpO1xuXG4gICAgZWxzZSB7XG4gICAgICBsZXQgdW5zZXQ6ICgobmV4dDogVCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG5cbiAgICAgIGNvbnN0IGdldCA9IG1ldGhvZChrZXkpO1xuICAgICAgY29uc3Qgc2V0ID0gKHZhbHVlPzogYW55KSA9PiB7XG4gICAgICAgIGlmKCF1cGRhdGUoc3ViamVjdCwga2V5LCB2YWx1ZSkgfHwgIWFyZylcbiAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgaWYodW5zZXQpXG4gICAgICAgICAgdW5zZXQgPSB2b2lkIHVuc2V0KHZhbHVlKTtcbiAgICBcbiAgICAgICAgaWYodmFsdWUgPT09IG51bGwgJiYgYXJnMiAhPT0gZmFsc2UpXG4gICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGN0eCA9IGNvbnRleHQoKTtcbiAgICAgICAgY29uc3Qgb3V0ID0gYXJnLmNhbGwoc3ViamVjdCwgdmFsdWUpO1xuICAgICAgICBjb25zdCBmbHVzaCA9IGN0eCgpO1xuXG4gICAgICAgIHVuc2V0ID0ga2V5ID0+IHtcbiAgICAgICAgICBpZih0eXBlb2Ygb3V0ID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgIG91dChrZXkpO1xuXG4gICAgICAgICAgZmx1c2goKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgXG4gICAgICBzdGF0ZVtrZXldID0gbnVsbDtcbiAgICAgIHZhbHVlID0gZGVmaW5lUHJvcGVydGllcyhzZXQsIHtcbiAgICAgICAgY3VycmVudDogeyBnZXQsIHNldCB9LFxuICAgICAgICBnZXQ6IHsgdmFsdWU6IGdldCB9XG4gICAgICB9KSBhcyByZWYuT2JqZWN0PFQ+O1xuICAgIH1cblxuICAgIGRlZmluZVByb3BlcnR5KHN1YmplY3QsIGtleSwgeyB2YWx1ZSB9KTtcbiAgfSlcbn1cblxuZXhwb3J0IHsgcmVmIH0iXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLGFBQWEsZUFBZTtBQUNyQyxTQUFnQixjQUFjO0FBQzlCLFNBQVMsV0FBVztBQUVwQixNQUFNLEVBQUUsZ0JBQWdCLGlCQUFpQixJQUFJO0FBOEU3QyxTQUFTLElBQ1AsS0FDQSxNQUF3QztBQUV4QyxTQUFPLElBQU8sQ0FBQyxLQUFLLFNBQVMsVUFBVTtBQUNyQyxRQUFJLFFBQVEsQ0FBQztBQUNiLFVBQU0sU0FBUyxDQUFDQSxTQUNkLENBQUMsYUFBa0MsV0FDL0IsWUFBWSxTQUFTLE1BQU0sU0FBUyxNQUFNQSxJQUFHLENBQUMsR0FBR0EsSUFBRyxJQUNwRCxNQUFNQSxJQUFHO0FBRWYsUUFBRyxRQUFRO0FBQ1QsY0FBUSxJQUFJLE1BQU07QUFDaEIsbUJBQVVBLFFBQU87QUFDZixjQUFHLE9BQU8sUUFBUTtBQUNoQiwyQkFBZSxPQUFPQSxNQUFLO0FBQUEsY0FDekIsY0FBYztBQUFBLGNBQ2QsTUFBSztBQUNILHNCQUFNLE1BQU0sS0FBS0EsSUFBRztBQUNwQiwrQkFBZSxPQUFPQSxNQUFLLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDekMsdUJBQU87QUFBQSxjQUNUO0FBQUEsWUFDRixDQUFDO0FBQUEsZUFDRTtBQUNILGtCQUFNLE1BQU0sT0FBT0EsSUFBRztBQUN0QixrQkFBTSxNQUFNLENBQUNDLFdBQW1CO0FBQzlCLHFCQUFPLFNBQVNELE1BQUtDLE1BQUs7QUFBQSxZQUM1QjtBQUVBLDZCQUFpQixLQUFLO0FBQUEsY0FDcEIsU0FBUyxFQUFFLEtBQUssSUFBSTtBQUFBLGNBQ3BCLEtBQUssRUFBRSxPQUFPLElBQUk7QUFBQSxZQUNwQixDQUFDO0FBRUQsMkJBQWUsT0FBT0QsTUFBSyxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQUEsVUFDM0M7QUFBQSxNQUNKLENBQUM7QUFBQSxhQUVLLE9BQU8sT0FBTztBQUNwQixZQUFNLElBQUksTUFBTSw2REFBNkQ7QUFBQSxTQUUxRTtBQUNILFVBQUk7QUFFSixZQUFNLE1BQU0sT0FBTyxHQUFHO0FBQ3RCLFlBQU0sTUFBTSxDQUFDQyxXQUFnQjtBQUMzQixZQUFHLENBQUMsT0FBTyxTQUFTLEtBQUtBLE1BQUssS0FBSyxDQUFDO0FBQ2xDO0FBRUYsWUFBRztBQUNELGtCQUFRLEtBQUssTUFBTUEsTUFBSztBQUUxQixZQUFHQSxXQUFVLFFBQVEsU0FBUztBQUM1QjtBQUVGLGNBQU0sTUFBTSxRQUFRO0FBQ3BCLGNBQU0sTUFBTSxJQUFJLEtBQUssU0FBU0EsTUFBSztBQUNuQyxjQUFNLFFBQVEsSUFBSTtBQUVsQixnQkFBUSxDQUFBRCxTQUFPO0FBQ2IsY0FBRyxPQUFPLE9BQU87QUFDZixnQkFBSUEsSUFBRztBQUVULGdCQUFNO0FBQUEsUUFDUjtBQUFBLE1BQ0Y7QUFFQSxZQUFNLEdBQUcsSUFBSTtBQUNiLGNBQVEsaUJBQWlCLEtBQUs7QUFBQSxRQUM1QixTQUFTLEVBQUUsS0FBSyxJQUFJO0FBQUEsUUFDcEIsS0FBSyxFQUFFLE9BQU8sSUFBSTtBQUFBLE1BQ3BCLENBQUM7QUFBQSxJQUNIO0FBRUEsbUJBQWUsU0FBUyxLQUFLLEVBQUUsTUFBTSxDQUFDO0FBQUEsRUFDeEMsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogWyJrZXkiLCAidmFsdWUiXQp9Cg==
66
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL3JlZi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgYWRkTGlzdGVuZXIsIGVudGVyIH0gZnJvbSAnLi4vY29udHJvbCc7XG5pbXBvcnQgeyBNb2RlbCwgdXBkYXRlIH0gZnJvbSAnLi4vbW9kZWwnO1xuaW1wb3J0IHsgdXNlIH0gZnJvbSAnLi91c2UnO1xuXG5jb25zdCB7IGRlZmluZVByb3BlcnR5LCBkZWZpbmVQcm9wZXJ0aWVzIH0gPSBPYmplY3Q7XG5cbmRlY2xhcmUgbmFtZXNwYWNlIHJlZiB7XG4gIHR5cGUgQ2FsbGJhY2s8VD4gPSAoYXJndW1lbnQ6IFQpID0+XG4gICAgKChuZXh0OiBUIHwgbnVsbCkgPT4gdm9pZCkgfCBQcm9taXNlPHZvaWQ+IHwgdm9pZCB8IGJvb2xlYW47XG5cbiAgaW50ZXJmYWNlIE9iamVjdDxUID0gYW55PiB7XG4gICAgKG5leHQ6IFQgfCBudWxsKTogdm9pZDtcblxuICAgIC8qKiBDdXJyZW50IHZhbHVlIGhlbGQgYnkgdGhpcyByZWZlcmVuY2UuICovXG4gICAgY3VycmVudDogVCB8IG51bGw7XG5cbiAgICAvKiogXG4gICAgICogU3Vic2NyaWJlIHRvIGNoYW5nZXMgb2YgdGhpcyByZWZlcmVuY2UuXG4gICAgICogXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gaW52b2tlIHdpdGggdGhlIGN1cnJlbnQgdmFsdWUgd2hlbiBpdCBjaGFuZ2VzLlxuICAgICAqIEByZXR1cm5zIFVuc3Vic2NyaWJlIGZ1bmN0aW9uIHRvIHN0b3AgbGlzdGVuaW5nIHRvIGNoYW5nZXMuXG4gICAgICovXG4gICAgZ2V0KGNhbGxiYWNrOiAodmFsdWU6IFQpID0+IHZvaWQpOiAoKSA9PiB2b2lkO1xuXG4gICAgLyoqIFJldHJpZXZlIGN1cnJlbnQgdmFsdWUuICovXG4gICAgZ2V0KCk6IFQgfCBudWxsO1xuICB9XG5cbiAgLyoqIE9iamVjdCB3aXRoIHJlZmVyZW5jZXMgdG8gYWxsIG1hbmFnZWQgdmFsdWVzIG9mIGBUYC4gKi9cblxuICAvKiogT2JqZWN0IHdpdGggcmVmZXJlbmNlcyB0byBhbGwgbWFuYWdlZCB2YWx1ZXMgb2YgYFRgLiAqL1xuICB0eXBlIFByb3h5PFQgZXh0ZW5kcyBNb2RlbD4gPVxuICAgICYgeyBbUCBpbiBNb2RlbC5GaWVsZDxUPl0tPzogT2JqZWN0PFRbUF0+IH1cbiAgICAmIHsgZ2V0KCk6IFQgfTtcblxuICB0eXBlIEN1c3RvbVByb3h5PFQgZXh0ZW5kcyBNb2RlbCwgUj4gPVxuICAgICYgeyBbUCBpbiBNb2RlbC5GaWVsZDxUPl0tPzogUiB9XG4gICAgJiB7IGdldCgpOiBUIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCByZWZlcmVuY2VzIHRvIGFsbCBtYW5hZ2VkIHZhbHVlcy5cbiAqIEVhY2ggcHJvcGVydHkgaXMgYSBmdW5jdGlvbiB0byBzZXQgdmFsdWUgaW4gc3RhdGUgd2hlbiBpbnZva2VkLlxuICpcbiAqICpQcm9wZXJ0aWVzIGFyZSBzaW11bHRhbmVvdXNseSBhIHJlZi1mdW5jdGlvbiBhbmQgcmVmLW9iamVjdCwgdXNlIGFzIG5lZWRlZC4qXG4gKlxuICogQHBhcmFtIHRhcmdldCAtIFNvdXJjZSBtb2RlbCBmcm9tIHdoaWNoIHRvIHJlZmVyZW5jZSB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIHJlZiA8VCBleHRlbmRzIE1vZGVsPiAodGFyZ2V0OiBUKTogcmVmLlByb3h5PFQ+O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHdpdGggdmFsdWVzIGJhc2VkIG9uIG1hbmFnZWQgdmFsdWVzLlxuICogRWFjaCBwcm9wZXJ0eSB3aWxsIGludm9rZSBtYXBwZXIgZnVuY3Rpb24gb24gZmlyc3QgYWNjZXNzIHN1cHBseVxuICogdGhlIGl0cyByZXR1cm4gdmFsdWUgZ29pbmcgZm9yd2FyZC5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gU291cmNlIG1vZGVsIGZyb20gd2hpY2ggdG8gcmVmZXJlbmNlIHZhbHVlcy5cbiAqIEBwYXJhbSBtYXBwZXIgLSBGdW5jdGlvbiBwcm9kdWNpbmcgdGhlIHBsYWNlaG9sZGVyIHZhbHVlIGZvciBhbnkgZ2l2ZW4gcHJvcGVydHkuXG4gKi9cbmZ1bmN0aW9uIHJlZiA8TyBleHRlbmRzIE1vZGVsLCBSPlxuICAodGFyZ2V0OiBPLCBtYXBwZXI6IChrZXk6IE1vZGVsLkZpZWxkPE8+KSA9PiBSKTogcmVmLkN1c3RvbVByb3h5PE8sIFI+O1xuXG4vKipcbiAqIENyZWF0ZXMgYSByZWYtY29tcGF0aWJsZSBwcm9wZXJ0eS5cbiAqIFdpbGwgcGVyc2lzdCB2YWx1ZSwgYW5kIHVwZGF0ZXMgdG8gdGhpcyBhcmUgbWFkZSBwYXJ0IG9mIGNvbnRyb2xsZXIgZXZlbnQtc3RyZWFtLlxuICpcbiAqICpPdXRwdXQgaXMgc2ltdWx0YW5lb3VzbHkgYSByZWYtZnVuY3Rpb24gYW5kIHJlZi1vYmplY3QsIHVzZSBhcyBuZWVkZWQuKlxuICpcbiAqIEBwYXJhbSBjYWxsYmFjayAtIE9wdGlvbmFsIGNhbGxiYWNrIHRvIHN5bmNocm9ub3VzbHkgZmlyZSB3aGVuIHJlZmVyZW5jZSBpcyBmaXJzdCBzZXQgb3IgZG9lcyB1cGRhdGUuXG4gKi9cbmZ1bmN0aW9uIHJlZiA8VD4gKGNhbGxiYWNrPzogcmVmLkNhbGxiYWNrPFQ+KTogcmVmLk9iamVjdDxUPjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgcmVmLWNvbXBhdGlibGUgcHJvcGVydHkuXG4gKiBXaWxsIHBlcnNpc3QgdmFsdWUsIGFuZCB1cGRhdGVzIHRvIHRoaXMgYXJlIG1hZGUgcGFydCBvZiBjb250cm9sbGVyIGV2ZW50LXN0cmVhbS5cbiAqXG4gKiAqT3V0cHV0IGlzIHNpbXVsdGFuZW91c2x5IGEgcmVmLWZ1bmN0aW9uIGFuZCByZWYtb2JqZWN0LCB1c2UgYXMgbmVlZGVkLipcbiAqXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBPcHRpb25hbCBjYWxsYmFjayB0byBzeW5jaHJvbm91c2x5IGZpcmUgd2hlbiByZWZlcmVuY2UgaXMgZmlyc3Qgc2V0IG9yIGRvZXMgdXBkYXRlLlxuICogQHBhcmFtIGlnbm9yZU51bGwgLSBEZWZhdWx0IGB0cnVlYC4gSWYgYGZhbHNlYCwgd2lsbCBzdGlsbCBjYWxsYmFjayB3aXRoIGBudWxsYC5cbiAqL1xuZnVuY3Rpb24gcmVmIDxUPiAoY2FsbGJhY2s6IHJlZi5DYWxsYmFjazxUIHwgbnVsbD4sIGlnbm9yZU51bGw6IGJvb2xlYW4pOiByZWYuT2JqZWN0PFQ+O1xuXG5mdW5jdGlvbiByZWY8VD4oXG4gIGFyZz86IHJlZi5DYWxsYmFjazxUPiB8IE1vZGVsLFxuICBhcmcyPzogKChrZXk6IHN0cmluZykgPT4gYW55KSB8IGJvb2xlYW4pe1xuXG4gIHJldHVybiB1c2U8VD4oKGtleSwgc3ViamVjdCwgc3RhdGUpID0+IHtcbiAgICBsZXQgdmFsdWUgPSB7fTtcbiAgICBjb25zdCBtZXRob2QgPSAoa2V5OiBzdHJpbmcpID0+XG4gICAgICAoY2FsbGJhY2s/OiAodmFsdWU6IFQpID0+IHZvaWQpID0+IGNhbGxiYWNrXG4gICAgICAgID8gYWRkTGlzdGVuZXIoc3ViamVjdCwgKCkgPT4gY2FsbGJhY2soc3RhdGVba2V5XSksIGtleSlcbiAgICAgICAgOiBzdGF0ZVtrZXldO1xuXG4gICAgaWYoYXJnID09PSBzdWJqZWN0KVxuICAgICAgc3ViamVjdC5nZXQoKCkgPT4ge1xuICAgICAgICBmb3IoY29uc3Qga2V5IGluIHN0YXRlKVxuICAgICAgICAgIGlmKHR5cGVvZiBhcmcyID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgIGRlZmluZVByb3BlcnR5KHZhbHVlLCBrZXksIHtcbiAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICBnZXQoKXtcbiAgICAgICAgICAgICAgICBjb25zdCBvdXQgPSBhcmcyKGtleSk7XG4gICAgICAgICAgICAgICAgZGVmaW5lUHJvcGVydHkodmFsdWUsIGtleSwgeyB2YWx1ZTogb3V0IH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBvdXQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBnZXQgPSBtZXRob2Qoa2V5KTtcbiAgICAgICAgICAgIGNvbnN0IHNldCA9ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICB1cGRhdGUoc3ViamVjdCwga2V5LCB2YWx1ZSlcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGRlZmluZVByb3BlcnRpZXMoc2V0LCB7XG4gICAgICAgICAgICAgIGN1cnJlbnQ6IHsgZ2V0LCBzZXQgfSxcbiAgICAgICAgICAgICAgZ2V0OiB7IHZhbHVlOiBnZXQgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRlZmluZVByb3BlcnR5KHZhbHVlLCBrZXksIHsgdmFsdWU6IHNldCB9KTtcbiAgICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgZWxzZSBpZih0eXBlb2YgYXJnID09IFwib2JqZWN0XCIpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJyZWYgaW5zdHJ1Y3Rpb24gZG9lcyBub3Qgc3VwcG9ydCBvYmplY3Qgd2hpY2ggaXMgbm90ICd0aGlzJ1wiKTtcblxuICAgIGVsc2Uge1xuICAgICAgbGV0IHVuc2V0OiAoKG5leHQ6IFQpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuXG4gICAgICBjb25zdCBnZXQgPSBtZXRob2Qoa2V5KTtcbiAgICAgIGNvbnN0IHNldCA9ICh2YWx1ZT86IGFueSkgPT4ge1xuICAgICAgICBpZighdXBkYXRlKHN1YmplY3QsIGtleSwgdmFsdWUpIHx8ICFhcmcpXG4gICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGlmKHVuc2V0KVxuICAgICAgICAgIHVuc2V0ID0gdm9pZCB1bnNldCh2YWx1ZSk7XG4gICAgXG4gICAgICAgIGlmKHZhbHVlID09PSBudWxsICYmIGFyZzIgIT09IGZhbHNlKVxuICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBleGl0ID0gZW50ZXIoKTtcbiAgICAgICAgY29uc3Qgb3V0ID0gYXJnLmNhbGwoc3ViamVjdCwgdmFsdWUpO1xuICAgICAgICBjb25zdCBmbHVzaCA9IGV4aXQoKTtcblxuICAgICAgICB1bnNldCA9IGtleSA9PiB7XG4gICAgICAgICAgaWYodHlwZW9mIG91dCA9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgICBvdXQoa2V5KTtcblxuICAgICAgICAgIGZsdXNoKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gIFxuICAgICAgc3RhdGVba2V5XSA9IG51bGw7XG4gICAgICB2YWx1ZSA9IGRlZmluZVByb3BlcnRpZXMoc2V0LCB7XG4gICAgICAgIGN1cnJlbnQ6IHsgZ2V0LCBzZXQgfSxcbiAgICAgICAgZ2V0OiB7IHZhbHVlOiBnZXQgfVxuICAgICAgfSkgYXMgcmVmLk9iamVjdDxUPjtcbiAgICB9XG5cbiAgICBkZWZpbmVQcm9wZXJ0eShzdWJqZWN0LCBrZXksIHsgdmFsdWUgfSk7XG4gIH0pXG59XG5cbmV4cG9ydCB7IHJlZiB9Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxhQUFhLGFBQWE7QUFDbkMsU0FBZ0IsY0FBYztBQUM5QixTQUFTLFdBQVc7QUFFcEIsTUFBTSxFQUFFLGdCQUFnQixpQkFBaUIsSUFBSTtBQThFN0MsU0FBUyxJQUNQLEtBQ0EsTUFBd0M7QUFFeEMsU0FBTyxJQUFPLENBQUMsS0FBSyxTQUFTLFVBQVU7QUFDckMsUUFBSSxRQUFRLENBQUM7QUFDYixVQUFNLFNBQVMsQ0FBQ0EsU0FDZCxDQUFDLGFBQWtDLFdBQy9CLFlBQVksU0FBUyxNQUFNLFNBQVMsTUFBTUEsSUFBRyxDQUFDLEdBQUdBLElBQUcsSUFDcEQsTUFBTUEsSUFBRztBQUVmLFFBQUcsUUFBUTtBQUNULGNBQVEsSUFBSSxNQUFNO0FBQ2hCLG1CQUFVQSxRQUFPO0FBQ2YsY0FBRyxPQUFPLFFBQVE7QUFDaEIsMkJBQWUsT0FBT0EsTUFBSztBQUFBLGNBQ3pCLGNBQWM7QUFBQSxjQUNkLE1BQUs7QUFDSCxzQkFBTSxNQUFNLEtBQUtBLElBQUc7QUFDcEIsK0JBQWUsT0FBT0EsTUFBSyxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQ3pDLHVCQUFPO0FBQUEsY0FDVDtBQUFBLFlBQ0YsQ0FBQztBQUFBLGVBQ0U7QUFDSCxrQkFBTSxNQUFNLE9BQU9BLElBQUc7QUFDdEIsa0JBQU0sTUFBTSxDQUFDQyxXQUFtQjtBQUM5QixxQkFBTyxTQUFTRCxNQUFLQyxNQUFLO0FBQUEsWUFDNUI7QUFFQSw2QkFBaUIsS0FBSztBQUFBLGNBQ3BCLFNBQVMsRUFBRSxLQUFLLElBQUk7QUFBQSxjQUNwQixLQUFLLEVBQUUsT0FBTyxJQUFJO0FBQUEsWUFDcEIsQ0FBQztBQUVELDJCQUFlLE9BQU9ELE1BQUssRUFBRSxPQUFPLElBQUksQ0FBQztBQUFBLFVBQzNDO0FBQUEsTUFDSixDQUFDO0FBQUEsYUFFSyxPQUFPLE9BQU87QUFDcEIsWUFBTSxJQUFJLE1BQU0sNkRBQTZEO0FBQUEsU0FFMUU7QUFDSCxVQUFJO0FBRUosWUFBTSxNQUFNLE9BQU8sR0FBRztBQUN0QixZQUFNLE1BQU0sQ0FBQ0MsV0FBZ0I7QUFDM0IsWUFBRyxDQUFDLE9BQU8sU0FBUyxLQUFLQSxNQUFLLEtBQUssQ0FBQztBQUNsQztBQUVGLFlBQUc7QUFDRCxrQkFBUSxLQUFLLE1BQU1BLE1BQUs7QUFFMUIsWUFBR0EsV0FBVSxRQUFRLFNBQVM7QUFDNUI7QUFFRixjQUFNLE9BQU8sTUFBTTtBQUNuQixjQUFNLE1BQU0sSUFBSSxLQUFLLFNBQVNBLE1BQUs7QUFDbkMsY0FBTSxRQUFRLEtBQUs7QUFFbkIsZ0JBQVEsQ0FBQUQsU0FBTztBQUNiLGNBQUcsT0FBTyxPQUFPO0FBQ2YsZ0JBQUlBLElBQUc7QUFFVCxnQkFBTTtBQUFBLFFBQ1I7QUFBQSxNQUNGO0FBRUEsWUFBTSxHQUFHLElBQUk7QUFDYixjQUFRLGlCQUFpQixLQUFLO0FBQUEsUUFDNUIsU0FBUyxFQUFFLEtBQUssSUFBSTtBQUFBLFFBQ3BCLEtBQUssRUFBRSxPQUFPLElBQUk7QUFBQSxNQUNwQixDQUFDO0FBQUEsSUFDSDtBQUVBLG1CQUFlLFNBQVMsS0FBSyxFQUFFLE1BQU0sQ0FBQztBQUFBLEVBQ3hDLENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFsia2V5IiwgInZhbHVlIl0KfQo=
@@ -1,4 +1,4 @@
1
- import { addListener, context } from "../control";
1
+ import { addListener, enter } from "../control";
2
2
  import { event, update } from "../model";
3
3
  import { use } from "./use";
4
4
  function set(value, argument) {
@@ -14,18 +14,16 @@ function set(value, argument) {
14
14
  throw err;
15
15
  }
16
16
  property.get = argument !== false;
17
+ const set2 = (value2) => subject[key] = value2;
17
18
  if (value instanceof Promise)
18
- value.then(
19
- (value2) => update(subject, key, value2),
20
- (error) => {
21
- event(subject, key);
22
- property.get = () => {
23
- throw error;
24
- };
25
- }
26
- );
19
+ value.then(set2, (error) => {
20
+ event(subject, key);
21
+ property.get = () => {
22
+ throw error;
23
+ };
24
+ });
27
25
  else
28
- update(subject, key, value);
26
+ set2(value);
29
27
  if (argument)
30
28
  return null;
31
29
  return subject[key];
@@ -40,16 +38,16 @@ function set(value, argument) {
40
38
  if (typeof argument == "function") {
41
39
  let unset;
42
40
  property.set = function(value2, previous) {
43
- const ctx = context();
44
- const out = argument.call(this, value2, previous);
45
- const flush = ctx();
46
- if (out === false)
47
- return out;
41
+ const exit = enter();
42
+ const returns = argument.call(this, value2, previous);
43
+ const flush = exit();
44
+ if (returns === false)
45
+ return false;
48
46
  if (typeof unset == "function")
49
47
  unset(value2);
50
48
  unset = (next) => {
51
- if (typeof out == "function")
52
- out(next);
49
+ if (typeof returns == "function")
50
+ returns(next);
53
51
  flush();
54
52
  };
55
53
  };
@@ -81,4 +79,4 @@ function attempt(fn) {
81
79
  export {
82
80
  set
83
81
  };
84
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL3NldC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgYWRkTGlzdGVuZXIsIGNvbnRleHQgfSBmcm9tICcuLi9jb250cm9sJztcbmltcG9ydCB7IE1vZGVsLCBldmVudCwgdXBkYXRlIH0gZnJvbSAnLi4vbW9kZWwnO1xuaW1wb3J0IHsgdXNlIH0gZnJvbSAnLi91c2UnO1xuXG5kZWNsYXJlIG5hbWVzcGFjZSBzZXQge1xuICB0eXBlIENhbGxiYWNrPFQsIFMgPSBhbnk+ID0gKHRoaXM6IFMsIG5leHQ6IFQsIHByZXZpb3VzOiBUKSA9PlxuICAgICgobmV4dDogVCkgPT4gdm9pZCkgfCBQcm9taXNlPGFueT4gfCB2b2lkIHwgYm9vbGVhbjtcblxuICB0eXBlIEZhY3Rvcnk8VCwgUyA9IGFueT4gPSAodGhpczogUywga2V5OiBzdHJpbmcpID0+IFByb21pc2U8VD4gfCBUO1xufVxuXG4vKipcbiAqIFNldCBwcm9wZXJ0eSBhcyBgdW5kZWZpbmVkYCBidXQgcmVxdWlyZWQuXG4gKiBcbiAqIFByb3BlcnR5IGNhbm5vdCBiZSBhY2Nlc3NlZCB1bnRpbCBpdCBpcyBkZWZpbmVkLiBJZiBhY2Nlc3NlZCB3aGlsZSB1bmRlZmluZWQsIGEgaHlicmlkXG4gKiBgUHJvbWlzZWAvYEVycm9yYCAoYWthOiBbU3VzcGVuc2VdKGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9jb25jdXJyZW50LW1vZGUtc3VzcGVuc2UuaHRtbCkpIHdpbGwgYmUgdGhyb3duLlxuICovXG5mdW5jdGlvbiBzZXQgPFQgPSBhbnk+KCk6IFQ7XG5cbi8qKlxuICogU2V0IHByb3BlcnR5IHdpdGggYSBmYWN0b3J5IGZ1bmN0aW9uLlxuICogXG4gKiAqKk5vdGUqKiBGYWN0b3J5IGlzIGxhenkhIEl0IHdpbGwgb25seSBydW4gaWYvd2hlbiBwcm9wZXJ0eSBpcyBhY2Nlc3NlZC5cbiAqIFZhbHVlIHdpbGwgYmUgdW5kZWZpbmVkIHVudGlsIGZhY3RvcnkgcmVzb2x2ZXMsIHdoaWNoIHdpbGwgYWxzbyBkaXNwYXRjaCBhbiB1cGRhdGUgZm9yIHRoZSBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gc2V0IDxUPiAoZmFjdG9yeTogc2V0LkZhY3Rvcnk8VD4gfCBQcm9taXNlPFQ+LCByZXF1aXJlZDogZmFsc2UpOiBUIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIFNldCBwcm9wZXJ0eSB3aXRoIGEgZmFjdG9yeSBmdW5jdGlvbi5cbiAqXG4gKiBJZiBhc3luYywgcHJvcGVydHkgY2Fubm90IGJlIGFjY2Vzc2VkIHVudGlsIHJlc29sdmVzLCB5ZWlsZGluZyBhIHJlc3VsdC5cbiAqIElmIGFjY2Vzc2VkIHdoaWxlIHN0aWxsIHByb2Nlc3NpbmcsIFJlYWN0IFN1c3BlbnNlIHdpbGwgYmUgdGhyb3duLlxuICpcbiAqIEBwYXJhbSBmYWN0b3J5IC0gQ2FsbGJhY2sgcnVuIHRvIGRlcnJpdmUgcHJvcGVydHkgdmFsdWUuXG4gKiBAcGFyYW0gcmVxdWlyZWQgLSBJZiB0cnVlIHJ1biBmYWN0b3J5IGltbWVkaWF0ZWx5IG9uIGNyZWF0aW9uLCBvdGhlcndpc2Ugb24gYWNjZXNzLlxuICovXG5mdW5jdGlvbiBzZXQgPFQ+IChmYWN0b3J5OiBzZXQuRmFjdG9yeTxUPiB8IFByb21pc2U8VD4sIHJlcXVpcmVkPzogYm9vbGVhbik6IFQ7XG5cbi8qKlxuICogU2V0IGEgcHJvcGVydHkgd2l0aCBlbXB0eSBwbGFjZWhvbGRlciBhbmQvb3IgdXBkYXRlIGNhbGxiYWNrLlxuICogXG4gKiBAcGFyYW0gdmFsdWUgLSBTdGFydGluZyB2YWx1ZSBmb3IgcHJvcGVydHkuIElmIHVuZGVmaW5lZCwgc3VzcGVuc2Ugd2lsbCBiZSB0aHJvd24gb24gYWNjZXNzLCB1bnRpbCB2YWx1ZSBpcyBzZXQgYW5kIGFjY2VwdGVkIGJ5IGNhbGxiYWNrLlxuICogQHBhcmFtIG9uVXBkYXRlIC0gQ2FsbGJhY2sgcnVuIHdoZW4gcHJvcGVydHkgaXMgc2V0LiBJZiByZXR1cm5zIGZhbHNlLCB1cGRhdGUgaXMgbm90IGFjY2VwdGVkIGFuZCBwcm9wZXJ0eSB3aWxsIGtlZXAgcHJldmlvdXMgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHNldCA8VD4gKHZhbHVlOiBUIHwgdW5kZWZpbmVkLCBvblVwZGF0ZT86IHNldC5DYWxsYmFjazxUPik6IFQ7XG5cbmZ1bmN0aW9uIHNldCA8VD4gKFxuICB2YWx1ZT86IHNldC5GYWN0b3J5PFQ+IHwgUHJvbWlzZTxUPiB8IFQsXG4gIGFyZ3VtZW50Pzogc2V0LkNhbGxiYWNrPGFueT4gfCBib29sZWFuKXtcblxuICByZXR1cm4gdXNlPFQ+KChrZXksIHN1YmplY3QpID0+IHtcbiAgICBjb25zdCBwcm9wZXJ0eTogTW9kZWwuRGVzY3JpcHRvciA9IHsgZW51bWVyYWJsZTogZmFsc2UgfTtcblxuICAgIGlmKHR5cGVvZiB2YWx1ZSA9PSBcImZ1bmN0aW9uXCIgfHwgdmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKXtcbiAgICAgIGZ1bmN0aW9uIGluaXQoKXtcbiAgICAgICAgaWYodHlwZW9mIHZhbHVlID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFsdWUgPSBhdHRlbXB0KHZhbHVlLmJpbmQoc3ViamVjdCwga2V5KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhdGNoKGVycil7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYEdlbmVyYXRpbmcgaW5pdGlhbCB2YWx1ZSBmb3IgJHtzdWJqZWN0fS4ke2tleX0gZmFpbGVkLmApO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgIH1cblxuICAgICAgICBwcm9wZXJ0eS5nZXQgPSBhcmd1bWVudCAhPT0gZmFsc2U7XG5cbiAgICAgICAgaWYodmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKVxuICAgICAgICAgIHZhbHVlLnRoZW4oXG4gICAgICAgICAgICB2YWx1ZSA9PiB1cGRhdGUoc3ViamVjdCwga2V5LCB2YWx1ZSksXG4gICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgIGV2ZW50KHN1YmplY3QsIGtleSk7XG4gICAgICAgICAgICAgIHByb3BlcnR5LmdldCA9ICgpID0+IHsgdGhyb3cgZXJyb3IgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB1cGRhdGUoc3ViamVjdCwga2V5LCB2YWx1ZSk7XG5cbiAgICAgICAgaWYoYXJndW1lbnQpXG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gc3ViamVjdFtrZXldO1xuICAgICAgfVxuXG4gICAgICBpZihhcmd1bWVudClcbiAgICAgICAgYWRkTGlzdGVuZXIoc3ViamVjdCwgaW5pdCwgdHJ1ZSk7XG4gICAgICBlbHNlXG4gICAgICAgIHByb3BlcnR5LmdldCA9IGluaXQ7XG4gICAgfVxuICAgIGVsc2UgaWYodmFsdWUgIT09IHVuZGVmaW5lZClcbiAgICAgIHByb3BlcnR5LnZhbHVlID0gdmFsdWU7XG5cbiAgICBpZih0eXBlb2YgYXJndW1lbnQgPT0gXCJmdW5jdGlvblwiKXtcbiAgICAgIGxldCB1bnNldDogKChuZXh0OiBUKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcblxuICAgICAgcHJvcGVydHkuc2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55LCBwcmV2aW91czogYW55KXtcbiAgICAgICAgY29uc3QgY3R4ID0gY29udGV4dCgpO1xuICAgICAgICBjb25zdCBvdXQgPSBhcmd1bWVudC5jYWxsKHRoaXMsIHZhbHVlLCBwcmV2aW91cyk7XG4gICAgICAgIGNvbnN0IGZsdXNoID0gY3R4KCk7XG5cbiAgICAgICAgaWYob3V0ID09PSBmYWxzZSlcbiAgICAgICAgICByZXR1cm4gb3V0O1xuXG4gICAgICAgIGlmKHR5cGVvZiB1bnNldCA9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgdW5zZXQodmFsdWUpO1xuXG4gICAgICAgIHVuc2V0ID0gKG5leHQ6IFQpID0+IHtcbiAgICAgICAgICBpZih0eXBlb2Ygb3V0ID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgIG91dChuZXh0KTtcblxuICAgICAgICAgIGZsdXNoKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZVxuICAgICAgcHJvcGVydHkuc2V0ID0gdmFsdWUgPT4ge1xuICAgICAgICBwcm9wZXJ0eS5nZXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHVwZGF0ZShzdWJqZWN0LCBrZXksIHZhbHVlKTtcbiAgICAgIH1cblxuICAgIHJldHVybiBwcm9wZXJ0eTtcbiAgfSlcbn1cblxuZnVuY3Rpb24gYXR0ZW1wdChmbjogKCkgPT4gYW55KTogYW55IHtcbiAgZnVuY3Rpb24gcmV0cnkoZXJyOiB1bmtub3duKXtcbiAgICBpZihlcnIgaW5zdGFuY2VvZiBQcm9taXNlKVxuICAgICAgcmV0dXJuIGVyci50aGVuKGNvbXB1dGUpO1xuICAgIGVsc2VcbiAgICAgIHRocm93IGVycjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXB1dGUoKTogYW55IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gZm4oKTtcblxuICAgICAgcmV0dXJuIG91dHB1dCBpbnN0YW5jZW9mIFByb21pc2VcbiAgICAgICAgPyBvdXRwdXQuY2F0Y2gocmV0cnkpXG4gICAgICAgIDogb3V0cHV0O1xuICAgIH1cbiAgICBjYXRjaChlcnIpe1xuICAgICAgcmV0dXJuIHJldHJ5KGVycik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbXB1dGUoKTtcbn1cblxuZXhwb3J0IHsgc2V0IH0iXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLGFBQWEsZUFBZTtBQUNyQyxTQUFnQixPQUFPLGNBQWM7QUFDckMsU0FBUyxXQUFXO0FBNENwQixTQUFTLElBQ1AsT0FDQSxVQUF1QztBQUV2QyxTQUFPLElBQU8sQ0FBQyxLQUFLLFlBQVk7QUFDOUIsVUFBTSxXQUE2QixFQUFFLFlBQVksTUFBTTtBQUV2RCxRQUFHLE9BQU8sU0FBUyxjQUFjLGlCQUFpQixTQUFRO0FBQ3hELFVBQVNBLFFBQVQsV0FBZTtBQUNiLFlBQUcsT0FBTyxTQUFTO0FBQ2pCLGNBQUk7QUFDRixvQkFBUSxRQUFRLE1BQU0sS0FBSyxTQUFTLEdBQUcsQ0FBQztBQUFBLFVBQzFDLFNBQ00sS0FBSTtBQUNSLG9CQUFRLEtBQUssZ0NBQWdDLE9BQU8sSUFBSSxHQUFHLFVBQVU7QUFDckUsa0JBQU07QUFBQSxVQUNSO0FBRUYsaUJBQVMsTUFBTSxhQUFhO0FBRTVCLFlBQUcsaUJBQWlCO0FBQ2xCLGdCQUFNO0FBQUEsWUFDSixDQUFBQyxXQUFTLE9BQU8sU0FBUyxLQUFLQSxNQUFLO0FBQUEsWUFDbkMsV0FBUztBQUNQLG9CQUFNLFNBQVMsR0FBRztBQUNsQix1QkFBUyxNQUFNLE1BQU07QUFBRSxzQkFBTTtBQUFBLGNBQU07QUFBQSxZQUNyQztBQUFBLFVBQ0Y7QUFBQTtBQUVBLGlCQUFPLFNBQVMsS0FBSyxLQUFLO0FBRTVCLFlBQUc7QUFDRCxpQkFBTztBQUVULGVBQU8sUUFBUSxHQUFHO0FBQUEsTUFDcEI7QUEzQlMsaUJBQUFEO0FBNkJULFVBQUc7QUFDRCxvQkFBWSxTQUFTQSxPQUFNLElBQUk7QUFBQTtBQUUvQixpQkFBUyxNQUFNQTtBQUFBLElBQ25CLFdBQ1EsVUFBVTtBQUNoQixlQUFTLFFBQVE7QUFFbkIsUUFBRyxPQUFPLFlBQVksWUFBVztBQUMvQixVQUFJO0FBRUosZUFBUyxNQUFNLFNBQW9CQyxRQUFZLFVBQWM7QUFDM0QsY0FBTSxNQUFNLFFBQVE7QUFDcEIsY0FBTSxNQUFNLFNBQVMsS0FBSyxNQUFNQSxRQUFPLFFBQVE7QUFDL0MsY0FBTSxRQUFRLElBQUk7QUFFbEIsWUFBRyxRQUFRO0FBQ1QsaUJBQU87QUFFVCxZQUFHLE9BQU8sU0FBUztBQUNqQixnQkFBTUEsTUFBSztBQUViLGdCQUFRLENBQUMsU0FBWTtBQUNuQixjQUFHLE9BQU8sT0FBTztBQUNmLGdCQUFJLElBQUk7QUFFVixnQkFBTTtBQUFBLFFBQ1I7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUVFLGVBQVMsTUFBTSxDQUFBQSxXQUFTO0FBQ3RCLGlCQUFTLE1BQU07QUFDZixlQUFPLFNBQVMsS0FBS0EsTUFBSztBQUFBLE1BQzVCO0FBRUYsV0FBTztBQUFBLEVBQ1QsQ0FBQztBQUNIO0FBRUEsU0FBUyxRQUFRLElBQW9CO0FBQ25DLFdBQVMsTUFBTSxLQUFhO0FBQzFCLFFBQUcsZUFBZTtBQUNoQixhQUFPLElBQUksS0FBSyxPQUFPO0FBQUE7QUFFdkIsWUFBTTtBQUFBLEVBQ1Y7QUFFQSxXQUFTLFVBQWU7QUFDdEIsUUFBSTtBQUNGLFlBQU0sU0FBUyxHQUFHO0FBRWxCLGFBQU8sa0JBQWtCLFVBQ3JCLE9BQU8sTUFBTSxLQUFLLElBQ2xCO0FBQUEsSUFDTixTQUNNLEtBQUk7QUFDUixhQUFPLE1BQU0sR0FBRztBQUFBLElBQ2xCO0FBQUEsRUFDRjtBQUVBLFNBQU8sUUFBUTtBQUNqQjsiLAogICJuYW1lcyI6IFsiaW5pdCIsICJ2YWx1ZSJdCn0K
82
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL3NldC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgYWRkTGlzdGVuZXIsIGVudGVyIH0gZnJvbSAnLi4vY29udHJvbCc7XG5pbXBvcnQgeyBNb2RlbCwgZXZlbnQsIHVwZGF0ZSB9IGZyb20gJy4uL21vZGVsJztcbmltcG9ydCB7IHVzZSB9IGZyb20gJy4vdXNlJztcblxuZGVjbGFyZSBuYW1lc3BhY2Ugc2V0IHtcbiAgdHlwZSBDYWxsYmFjazxULCBTID0gYW55PiA9ICh0aGlzOiBTLCBuZXh0OiBULCBwcmV2aW91czogVCkgPT5cbiAgICAoKG5leHQ6IFQpID0+IHZvaWQpIHwgUHJvbWlzZTxhbnk+IHwgdm9pZCB8IGJvb2xlYW47XG5cbiAgdHlwZSBGYWN0b3J5PFQsIFMgPSBhbnk+ID0gKHRoaXM6IFMsIGtleTogc3RyaW5nKSA9PiBQcm9taXNlPFQ+IHwgVDtcbn1cblxuLyoqXG4gKiBTZXQgcHJvcGVydHkgYXMgYHVuZGVmaW5lZGAgYnV0IHJlcXVpcmVkLlxuICogXG4gKiBQcm9wZXJ0eSBjYW5ub3QgYmUgYWNjZXNzZWQgdW50aWwgaXQgaXMgZGVmaW5lZC4gSWYgYWNjZXNzZWQgd2hpbGUgdW5kZWZpbmVkLCBhIGh5YnJpZFxuICogYFByb21pc2VgL2BFcnJvcmAgKGFrYTogW1N1c3BlbnNlXShodHRwczovL3JlYWN0anMub3JnL2RvY3MvY29uY3VycmVudC1tb2RlLXN1c3BlbnNlLmh0bWwpKSB3aWxsIGJlIHRocm93bi5cbiAqL1xuZnVuY3Rpb24gc2V0IDxUID0gYW55PigpOiBUO1xuXG4vKipcbiAqIFNldCBwcm9wZXJ0eSB3aXRoIGEgZmFjdG9yeSBmdW5jdGlvbi5cbiAqIFxuICogKipOb3RlKiogRmFjdG9yeSBpcyBsYXp5ISBJdCB3aWxsIG9ubHkgcnVuIGlmL3doZW4gcHJvcGVydHkgaXMgYWNjZXNzZWQuXG4gKiBWYWx1ZSB3aWxsIGJlIHVuZGVmaW5lZCB1bnRpbCBmYWN0b3J5IHJlc29sdmVzLCB3aGljaCB3aWxsIGFsc28gZGlzcGF0Y2ggYW4gdXBkYXRlIGZvciB0aGUgcHJvcGVydHkuXG4gKi9cbmZ1bmN0aW9uIHNldCA8VD4gKGZhY3Rvcnk6IHNldC5GYWN0b3J5PFQ+IHwgUHJvbWlzZTxUPiwgcmVxdWlyZWQ6IGZhbHNlKTogVCB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBTZXQgcHJvcGVydHkgd2l0aCBhIGZhY3RvcnkgZnVuY3Rpb24uXG4gKlxuICogSWYgYXN5bmMsIHByb3BlcnR5IGNhbm5vdCBiZSBhY2Nlc3NlZCB1bnRpbCByZXNvbHZlcywgeWVpbGRpbmcgYSByZXN1bHQuXG4gKiBJZiBhY2Nlc3NlZCB3aGlsZSBzdGlsbCBwcm9jZXNzaW5nLCBSZWFjdCBTdXNwZW5zZSB3aWxsIGJlIHRocm93bi5cbiAqXG4gKiBAcGFyYW0gZmFjdG9yeSAtIENhbGxiYWNrIHJ1biB0byBkZXJyaXZlIHByb3BlcnR5IHZhbHVlLlxuICogQHBhcmFtIHJlcXVpcmVkIC0gSWYgdHJ1ZSBydW4gZmFjdG9yeSBpbW1lZGlhdGVseSBvbiBjcmVhdGlvbiwgb3RoZXJ3aXNlIG9uIGFjY2Vzcy5cbiAqL1xuZnVuY3Rpb24gc2V0IDxUPiAoZmFjdG9yeTogc2V0LkZhY3Rvcnk8VD4gfCBQcm9taXNlPFQ+LCByZXF1aXJlZD86IGJvb2xlYW4pOiBUO1xuXG4vKipcbiAqIFNldCBwcm9wZXJ0eSB3aXRoIGEgZmFjdG9yeSBmdW5jdGlvbi5cbiAqXG4gKiBJZiBhc3luYywgcHJvcGVydHkgY2Fubm90IGJlIGFjY2Vzc2VkIHVudGlsIHJlc29sdmVzLCB5ZWlsZGluZyBhIHJlc3VsdC5cbiAqIElmIGFjY2Vzc2VkIHdoaWxlIHN0aWxsIHByb2Nlc3NpbmcsIFJlYWN0IFN1c3BlbnNlIHdpbGwgYmUgdGhyb3duLlxuICpcbiAqIEBwYXJhbSBmYWN0b3J5IC0gQ2FsbGJhY2sgcnVuIHRvIGRlcnJpdmUgcHJvcGVydHkgdmFsdWUuXG4gKiBAcGFyYW0gb25VcGRhdGUgLSBDYWxsYmFjayBydW4gd2hlbiBwcm9wZXJ0eSBpcyBmaW5pc2hlZCBjb21wdXRpbmcgb3IgaXMgc2V0LiBcbiAqL1xuZnVuY3Rpb24gc2V0IDxUPiAoZmFjdG9yeTogc2V0LkZhY3Rvcnk8VD4gfCBQcm9taXNlPFQ+LCBvblVwZGF0ZT86IHNldC5DYWxsYmFjazxUPik6IFQ7XG5cbi8qKlxuICogU2V0IGEgcHJvcGVydHkgd2l0aCBlbXB0eSBwbGFjZWhvbGRlciBhbmQvb3IgdXBkYXRlIGNhbGxiYWNrLlxuICogXG4gKiBAcGFyYW0gdmFsdWUgLSBTdGFydGluZyB2YWx1ZSBmb3IgcHJvcGVydHkuIElmIHVuZGVmaW5lZCwgc3VzcGVuc2Ugd2lsbCBiZSB0aHJvd24gb24gYWNjZXNzLCB1bnRpbCB2YWx1ZSBpcyBzZXQgYW5kIGFjY2VwdGVkIGJ5IGNhbGxiYWNrLlxuICogQHBhcmFtIG9uVXBkYXRlIC0gQ2FsbGJhY2sgcnVuIHdoZW4gcHJvcGVydHkgaXMgc2V0LiBJZiByZXR1cm5zIGZhbHNlLCB1cGRhdGUgaXMgbm90IGFjY2VwdGVkIGFuZCBwcm9wZXJ0eSB3aWxsIGtlZXAgcHJldmlvdXMgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHNldCA8VD4gKHZhbHVlOiBUIHwgdW5kZWZpbmVkLCBvblVwZGF0ZT86IHNldC5DYWxsYmFjazxUPik6IFQ7XG5cbmZ1bmN0aW9uIHNldCA8VD4gKFxuICB2YWx1ZT86IHNldC5GYWN0b3J5PFQ+IHwgUHJvbWlzZTxUPiB8IFQsXG4gIGFyZ3VtZW50Pzogc2V0LkNhbGxiYWNrPGFueT4gfCBib29sZWFuKXtcblxuICByZXR1cm4gdXNlPFQ+KChrZXksIHN1YmplY3QpID0+IHtcbiAgICBjb25zdCBwcm9wZXJ0eTogTW9kZWwuRGVzY3JpcHRvciA9IHsgZW51bWVyYWJsZTogZmFsc2UgfTtcblxuICAgIGlmKHR5cGVvZiB2YWx1ZSA9PSBcImZ1bmN0aW9uXCIgfHwgdmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKXtcbiAgICAgIGZ1bmN0aW9uIGluaXQoKXtcbiAgICAgICAgaWYodHlwZW9mIHZhbHVlID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFsdWUgPSBhdHRlbXB0KHZhbHVlLmJpbmQoc3ViamVjdCwga2V5KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhdGNoKGVycil7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYEdlbmVyYXRpbmcgaW5pdGlhbCB2YWx1ZSBmb3IgJHtzdWJqZWN0fS4ke2tleX0gZmFpbGVkLmApO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgIH1cblxuICAgICAgICBwcm9wZXJ0eS5nZXQgPSBhcmd1bWVudCAhPT0gZmFsc2U7XG5cbiAgICAgICAgY29uc3Qgc2V0ID0gKHZhbHVlOiBhbnkpID0+IHN1YmplY3Rba2V5XSA9IHZhbHVlO1xuXG4gICAgICAgIGlmKHZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSlcbiAgICAgICAgICB2YWx1ZS50aGVuKHNldCwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgZXZlbnQoc3ViamVjdCwga2V5KTtcbiAgICAgICAgICAgIHByb3BlcnR5LmdldCA9ICgpID0+IHsgdGhyb3cgZXJyb3IgfTtcbiAgICAgICAgICB9KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgc2V0KHZhbHVlKTtcblxuICAgICAgICBpZihhcmd1bWVudClcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiBzdWJqZWN0W2tleV07XG4gICAgICB9XG5cbiAgICAgIGlmKGFyZ3VtZW50KVxuICAgICAgICBhZGRMaXN0ZW5lcihzdWJqZWN0LCBpbml0LCB0cnVlKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcHJvcGVydHkuZ2V0ID0gaW5pdDtcbiAgICB9XG4gICAgZWxzZSBpZih2YWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgcHJvcGVydHkudmFsdWUgPSB2YWx1ZTtcblxuICAgIGlmKHR5cGVvZiBhcmd1bWVudCA9PSBcImZ1bmN0aW9uXCIpe1xuICAgICAgbGV0IHVuc2V0OiAoKG5leHQ6IFQpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuXG4gICAgICBwcm9wZXJ0eS5zZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnksIHByZXZpb3VzOiBhbnkpe1xuICAgICAgICBjb25zdCBleGl0ID0gZW50ZXIoKTtcbiAgICAgICAgY29uc3QgcmV0dXJucyA9IGFyZ3VtZW50LmNhbGwodGhpcywgdmFsdWUsIHByZXZpb3VzKTtcbiAgICAgICAgY29uc3QgZmx1c2ggPSBleGl0KCk7XG5cbiAgICAgICAgaWYocmV0dXJucyA9PT0gZmFsc2UpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGlmKHR5cGVvZiB1bnNldCA9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgdW5zZXQodmFsdWUpO1xuXG4gICAgICAgIHVuc2V0ID0gKG5leHQ6IFQpID0+IHtcbiAgICAgICAgICBpZih0eXBlb2YgcmV0dXJucyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgICByZXR1cm5zKG5leHQpO1xuXG4gICAgICAgICAgZmx1c2goKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBlbHNlXG4gICAgICBwcm9wZXJ0eS5zZXQgPSB2YWx1ZSA9PiB7XG4gICAgICAgIHByb3BlcnR5LmdldCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdXBkYXRlKHN1YmplY3QsIGtleSwgdmFsdWUpO1xuICAgICAgfVxuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9KVxufVxuXG5mdW5jdGlvbiBhdHRlbXB0KGZuOiAoKSA9PiBhbnkpOiBhbnkge1xuICBmdW5jdGlvbiByZXRyeShlcnI6IHVua25vd24pe1xuICAgIGlmKGVyciBpbnN0YW5jZW9mIFByb21pc2UpXG4gICAgICByZXR1cm4gZXJyLnRoZW4oY29tcHV0ZSk7XG4gICAgZWxzZVxuICAgICAgdGhyb3cgZXJyO1xuICB9XG5cbiAgZnVuY3Rpb24gY29tcHV0ZSgpOiBhbnkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBvdXRwdXQgPSBmbigpO1xuXG4gICAgICByZXR1cm4gb3V0cHV0IGluc3RhbmNlb2YgUHJvbWlzZVxuICAgICAgICA/IG91dHB1dC5jYXRjaChyZXRyeSlcbiAgICAgICAgOiBvdXRwdXQ7XG4gICAgfVxuICAgIGNhdGNoKGVycil7XG4gICAgICByZXR1cm4gcmV0cnkoZXJyKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29tcHV0ZSgpO1xufVxuXG5leHBvcnQgeyBzZXQgfSJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsYUFBYSxhQUFhO0FBQ25DLFNBQWdCLE9BQU8sY0FBYztBQUNyQyxTQUFTLFdBQVc7QUF1RHBCLFNBQVMsSUFDUCxPQUNBLFVBQXVDO0FBRXZDLFNBQU8sSUFBTyxDQUFDLEtBQUssWUFBWTtBQUM5QixVQUFNLFdBQTZCLEVBQUUsWUFBWSxNQUFNO0FBRXZELFFBQUcsT0FBTyxTQUFTLGNBQWMsaUJBQWlCLFNBQVE7QUFDeEQsVUFBU0EsUUFBVCxXQUFlO0FBQ2IsWUFBRyxPQUFPLFNBQVM7QUFDakIsY0FBSTtBQUNGLG9CQUFRLFFBQVEsTUFBTSxLQUFLLFNBQVMsR0FBRyxDQUFDO0FBQUEsVUFDMUMsU0FDTSxLQUFJO0FBQ1Isb0JBQVEsS0FBSyxnQ0FBZ0MsT0FBTyxJQUFJLEdBQUcsVUFBVTtBQUNyRSxrQkFBTTtBQUFBLFVBQ1I7QUFFRixpQkFBUyxNQUFNLGFBQWE7QUFFNUIsY0FBTUMsT0FBTSxDQUFDQyxXQUFlLFFBQVEsR0FBRyxJQUFJQTtBQUUzQyxZQUFHLGlCQUFpQjtBQUNsQixnQkFBTSxLQUFLRCxNQUFLLFdBQVM7QUFDdkIsa0JBQU0sU0FBUyxHQUFHO0FBQ2xCLHFCQUFTLE1BQU0sTUFBTTtBQUFFLG9CQUFNO0FBQUEsWUFBTTtBQUFBLFVBQ3JDLENBQUM7QUFBQTtBQUVELFVBQUFBLEtBQUksS0FBSztBQUVYLFlBQUc7QUFDRCxpQkFBTztBQUVULGVBQU8sUUFBUSxHQUFHO0FBQUEsTUFDcEI7QUExQlMsaUJBQUFEO0FBNEJULFVBQUc7QUFDRCxvQkFBWSxTQUFTQSxPQUFNLElBQUk7QUFBQTtBQUUvQixpQkFBUyxNQUFNQTtBQUFBLElBQ25CLFdBQ1EsVUFBVTtBQUNoQixlQUFTLFFBQVE7QUFFbkIsUUFBRyxPQUFPLFlBQVksWUFBVztBQUMvQixVQUFJO0FBRUosZUFBUyxNQUFNLFNBQW9CRSxRQUFZLFVBQWM7QUFDM0QsY0FBTSxPQUFPLE1BQU07QUFDbkIsY0FBTSxVQUFVLFNBQVMsS0FBSyxNQUFNQSxRQUFPLFFBQVE7QUFDbkQsY0FBTSxRQUFRLEtBQUs7QUFFbkIsWUFBRyxZQUFZO0FBQ2IsaUJBQU87QUFFVCxZQUFHLE9BQU8sU0FBUztBQUNqQixnQkFBTUEsTUFBSztBQUViLGdCQUFRLENBQUMsU0FBWTtBQUNuQixjQUFHLE9BQU8sV0FBVztBQUNuQixvQkFBUSxJQUFJO0FBRWQsZ0JBQU07QUFBQSxRQUNSO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFFRSxlQUFTLE1BQU0sQ0FBQUEsV0FBUztBQUN0QixpQkFBUyxNQUFNO0FBQ2YsZUFBTyxTQUFTLEtBQUtBLE1BQUs7QUFBQSxNQUM1QjtBQUVGLFdBQU87QUFBQSxFQUNULENBQUM7QUFDSDtBQUVBLFNBQVMsUUFBUSxJQUFvQjtBQUNuQyxXQUFTLE1BQU0sS0FBYTtBQUMxQixRQUFHLGVBQWU7QUFDaEIsYUFBTyxJQUFJLEtBQUssT0FBTztBQUFBO0FBRXZCLFlBQU07QUFBQSxFQUNWO0FBRUEsV0FBUyxVQUFlO0FBQ3RCLFFBQUk7QUFDRixZQUFNLFNBQVMsR0FBRztBQUVsQixhQUFPLGtCQUFrQixVQUNyQixPQUFPLE1BQU0sS0FBSyxJQUNsQjtBQUFBLElBQ04sU0FDTSxLQUFJO0FBQ1IsYUFBTyxNQUFNLEdBQUc7QUFBQSxJQUNsQjtBQUFBLEVBQ0Y7QUFFQSxTQUFPLFFBQVE7QUFDakI7IiwKICAibmFtZXMiOiBbImluaXQiLCAic2V0IiwgInZhbHVlIl0KfQo=
@@ -1,14 +1,13 @@
1
- import { watch } from "../control";
2
- import { fetch, Model, PARENT, STATE, uid, update } from "../model";
1
+ import { fetch, Model, PARENT, STATE, uid, update, watch } from "../model";
3
2
  const INSTRUCTION = /* @__PURE__ */ new Map();
4
3
  function use(arg1, arg2) {
5
- const token = Symbol("instruction-" + uid());
6
4
  if (Model.is(arg1))
7
- arg1 = child(arg1, arg2);
5
+ arg1 = childInstruction(arg1, arg2);
6
+ const token = Symbol("instruction-" + uid());
8
7
  INSTRUCTION.set(token, arg1);
9
8
  return token;
10
9
  }
11
- function child(type, arg2) {
10
+ function childInstruction(type, arg2) {
12
11
  return (key, subject) => {
13
12
  function set(next) {
14
13
  if (next ? !(next instanceof type) : arg2 !== false)
@@ -63,4 +62,4 @@ Model.on(init);
63
62
  export {
64
63
  use
65
64
  };
66
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL3VzZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgd2F0Y2ggfSBmcm9tICcuLi9jb250cm9sJztcbmltcG9ydCB7IGZldGNoLCBNb2RlbCwgUEFSRU5ULCBTVEFURSwgdWlkLCB1cGRhdGUgfSBmcm9tICcuLi9tb2RlbCc7XG5cbmNvbnN0IElOU1RSVUNUSU9OID0gbmV3IE1hcDxzeW1ib2wsIE1vZGVsLkluc3RydWN0aW9uPigpO1xuXG5mdW5jdGlvbiB1c2UgPFQ+IChpbnN0cnVjdGlvbjogTW9kZWwuSW5zdHJ1Y3Rpb248VD4pOiBUIGV4dGVuZHMgdm9pZCA/IHVua25vd24gOiBUO1xuXG5mdW5jdGlvbiB1c2UgPFQgZXh0ZW5kcyBNb2RlbD4gKFR5cGU6IE1vZGVsLkluaXQ8VD4sIHJlcXVpcmVkOiBmYWxzZSk6IFQgfCB1bmRlZmluZWQ7XG5cbmZ1bmN0aW9uIHVzZSA8VCBleHRlbmRzIE1vZGVsPiAoVHlwZTogTW9kZWwuSW5pdDxUPiwgcmVhZHk/OiAoaTogVCkgPT4gdm9pZCk6IFQ7XG5cbmZ1bmN0aW9uIHVzZShcbiAgYXJnMTogTW9kZWwuSW5pdCB8IE1vZGVsLkluc3RydWN0aW9uLFxuICBhcmcyPzogKChpOiBNb2RlbCkgPT4gdm9pZCkgfCBib29sZWFuKXtcblxuICBjb25zdCB0b2tlbiA9IFN5bWJvbChcImluc3RydWN0aW9uLVwiICsgdWlkKCkpO1xuXG4gIGlmKE1vZGVsLmlzKGFyZzEpKVxuICAgIGFyZzEgPSBjaGlsZChhcmcxLCBhcmcyKTtcblxuICBJTlNUUlVDVElPTi5zZXQodG9rZW4sIGFyZzEpO1xuICByZXR1cm4gdG9rZW47XG59XG5cbmZ1bmN0aW9uIGNoaWxkKFxuICB0eXBlOiBNb2RlbC5Jbml0PE1vZGVsPixcbiAgYXJnMj86ICgoaTogTW9kZWwpID0+IHZvaWQpIHwgYm9vbGVhblxuKTogTW9kZWwuSW5zdHJ1Y3Rpb248YW55LCBhbnk+IHtcbiAgcmV0dXJuIChrZXksIHN1YmplY3QpID0+IHtcbiAgICBmdW5jdGlvbiBzZXQobmV4dDogTW9kZWwgfCB1bmRlZmluZWQpe1xuICAgICAgaWYobmV4dCA/ICEobmV4dCBpbnN0YW5jZW9mIHR5cGUpIDogYXJnMiAhPT0gZmFsc2UpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtzdWJqZWN0fS4ke2tleX0gZXhwZWN0ZWQgTW9kZWwgb2YgdHlwZSAke3R5cGV9IGJ1dCBnb3QgJHtuZXh0ICYmIG5leHQuY29uc3RydWN0b3J9LmApO1xuXG4gICAgICB1cGRhdGUoc3ViamVjdCwga2V5LCBuZXh0KTtcblxuICAgICAgaWYobmV4dCAmJiB0eXBlb2YgYXJnMiA9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGFyZzIobmV4dCk7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IG5ldyB0eXBlKCk7XG5cbiAgICBzZXQodmFsdWUpO1xuICAgIFBBUkVOVC5zZXQodmFsdWUsIHN1YmplY3QpO1xuICAgIHZhbHVlLnNldCgpO1xuXG4gICAgcmV0dXJuIHsgc2V0IH07XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdCh0aGlzOiBNb2RlbCl7XG4gIGNvbnN0IHN0YXRlID0gU1RBVEUuZ2V0KHRoaXMpITtcblxuICBmb3IoY29uc3Qga2V5IGluIHRoaXMpe1xuICAgIGNvbnN0IHsgdmFsdWUgfSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywga2V5KSE7XG4gICAgY29uc3QgaW5zdHJ1Y3Rpb24gPSBJTlNUUlVDVElPTi5nZXQodmFsdWUpO1xuXG4gICAgaWYoIWluc3RydWN0aW9uKVxuICAgICAgY29udGludWU7XG5cbiAgICBJTlNUUlVDVElPTi5kZWxldGUodmFsdWUpO1xuICAgIGRlbGV0ZSAodGhpcyBhcyBhbnkpW2tleV07XG5cbiAgICBjb25zdCBvdXRwdXQgPSBpbnN0cnVjdGlvbi5jYWxsKHRoaXMsIGtleSwgdGhpcywgc3RhdGUpO1xuXG4gICAgaWYoIW91dHB1dClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgZGVzYyA9IHR5cGVvZiBvdXRwdXQgPT0gXCJvYmplY3RcIiA/IG91dHB1dCA6IHsgZ2V0OiBvdXRwdXQgfTtcblxuICAgIGlmKFwidmFsdWVcIiBpbiBkZXNjKVxuICAgICAgc3RhdGVba2V5XSA9IGRlc2MudmFsdWU7XG5cbiAgICBjb25zdCBtb2RlbCA9IHRoaXM7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kZWwsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogZGVzYy5lbnVtZXJhYmxlICE9PSBmYWxzZSxcbiAgICAgIGdldCh0aGlzOiBNb2RlbCl7XG4gICAgICAgIHJldHVybiB3YXRjaCh0aGlzLCBrZXksIFxuICAgICAgICAgIHR5cGVvZiBkZXNjLmdldCA9PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICAgID8gZGVzYy5nZXQodGhpcylcbiAgICAgICAgICAgIDogZmV0Y2gobW9kZWwsIGtleSwgZGVzYy5nZXQpXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgc2V0KG5leHQpe1xuICAgICAgICBpZihkZXNjLnNldCA9PT0gZmFsc2UpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke21vZGVsfS4ke2tleX0gaXMgcmVhZC1vbmx5LmApO1xuXG4gICAgICAgIHVwZGF0ZShtb2RlbCwga2V5LCBuZXh0LCBkZXNjLnNldCk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5Nb2RlbC5vbihpbml0KTtcblxuZXhwb3J0IHsgdXNlIH0iXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLGFBQWE7QUFDdEIsU0FBUyxPQUFPLE9BQU8sUUFBUSxPQUFPLEtBQUssY0FBYztBQUV6RCxNQUFNLGNBQWMsb0JBQUksSUFBK0I7QUFRdkQsU0FBUyxJQUNQLE1BQ0EsTUFBc0M7QUFFdEMsUUFBTSxRQUFRLE9BQU8saUJBQWlCLElBQUksQ0FBQztBQUUzQyxNQUFHLE1BQU0sR0FBRyxJQUFJO0FBQ2QsV0FBTyxNQUFNLE1BQU0sSUFBSTtBQUV6QixjQUFZLElBQUksT0FBTyxJQUFJO0FBQzNCLFNBQU87QUFDVDtBQUVBLFNBQVMsTUFDUCxNQUNBLE1BQzZCO0FBQzdCLFNBQU8sQ0FBQyxLQUFLLFlBQVk7QUFDdkIsYUFBUyxJQUFJLE1BQXdCO0FBQ25DLFVBQUcsT0FBTyxFQUFFLGdCQUFnQixRQUFRLFNBQVM7QUFDM0MsY0FBTSxJQUFJLE1BQU0sR0FBRyxPQUFPLElBQUksR0FBRywyQkFBMkIsSUFBSSxZQUFZLFFBQVEsS0FBSyxXQUFXLEdBQUc7QUFFekcsYUFBTyxTQUFTLEtBQUssSUFBSTtBQUV6QixVQUFHLFFBQVEsT0FBTyxRQUFRO0FBQ3hCLGFBQUssSUFBSTtBQUVYLGFBQU87QUFBQSxJQUNUO0FBRUEsVUFBTSxRQUFRLElBQUksS0FBSztBQUV2QixRQUFJLEtBQUs7QUFDVCxXQUFPLElBQUksT0FBTyxPQUFPO0FBQ3pCLFVBQU0sSUFBSTtBQUVWLFdBQU8sRUFBRSxJQUFJO0FBQUEsRUFDZjtBQUNGO0FBRUEsU0FBUyxPQUFpQjtBQUN4QixRQUFNLFFBQVEsTUFBTSxJQUFJLElBQUk7QUFFNUIsYUFBVSxPQUFPLE1BQUs7QUFDcEIsVUFBTSxFQUFFLE1BQU0sSUFBSSxPQUFPLHlCQUF5QixNQUFNLEdBQUc7QUFDM0QsVUFBTSxjQUFjLFlBQVksSUFBSSxLQUFLO0FBRXpDLFFBQUcsQ0FBQztBQUNGO0FBRUYsZ0JBQVksT0FBTyxLQUFLO0FBQ3hCLFdBQVEsS0FBYSxHQUFHO0FBRXhCLFVBQU0sU0FBUyxZQUFZLEtBQUssTUFBTSxLQUFLLE1BQU0sS0FBSztBQUV0RCxRQUFHLENBQUM7QUFDRjtBQUVGLFVBQU0sT0FBTyxPQUFPLFVBQVUsV0FBVyxTQUFTLEVBQUUsS0FBSyxPQUFPO0FBRWhFLFFBQUcsV0FBVztBQUNaLFlBQU0sR0FBRyxJQUFJLEtBQUs7QUFFcEIsVUFBTSxRQUFRO0FBRWQsV0FBTyxlQUFlLE9BQU8sS0FBSztBQUFBLE1BQ2hDLFlBQVksS0FBSyxlQUFlO0FBQUEsTUFDaEMsTUFBZ0I7QUFDZCxlQUFPO0FBQUEsVUFBTTtBQUFBLFVBQU07QUFBQSxVQUNqQixPQUFPLEtBQUssT0FBTyxhQUNmLEtBQUssSUFBSSxJQUFJLElBQ2IsTUFBTSxPQUFPLEtBQUssS0FBSyxHQUFHO0FBQUEsUUFDaEM7QUFBQSxNQUNGO0FBQUEsTUFDQSxJQUFJLE1BQUs7QUFDUCxZQUFHLEtBQUssUUFBUTtBQUNkLGdCQUFNLElBQUksTUFBTSxHQUFHLEtBQUssSUFBSSxHQUFHLGdCQUFnQjtBQUVqRCxlQUFPLE9BQU8sS0FBSyxNQUFNLEtBQUssR0FBRztBQUFBLE1BQ25DO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUVBLFNBQU87QUFDVDtBQUVBLE1BQU0sR0FBRyxJQUFJOyIsCiAgIm5hbWVzIjogW10KfQo=
65
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL3VzZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgZmV0Y2gsIE1vZGVsLCBQQVJFTlQsIFNUQVRFLCB1aWQsIHVwZGF0ZSwgd2F0Y2ggfSBmcm9tICcuLi9tb2RlbCc7XG5cbmNvbnN0IElOU1RSVUNUSU9OID0gbmV3IE1hcDxzeW1ib2wsIE1vZGVsLkluc3RydWN0aW9uPigpO1xuXG5mdW5jdGlvbiB1c2UgPFQ+IChpbnN0cnVjdGlvbjogTW9kZWwuSW5zdHJ1Y3Rpb248VD4pOiBUIGV4dGVuZHMgdm9pZCA/IHVua25vd24gOiBUO1xuXG5mdW5jdGlvbiB1c2UgPFQgZXh0ZW5kcyBNb2RlbD4gKFR5cGU6IE1vZGVsLkluaXQ8VD4sIHJlcXVpcmVkOiBmYWxzZSk6IFQgfCB1bmRlZmluZWQ7XG5cbmZ1bmN0aW9uIHVzZSA8VCBleHRlbmRzIE1vZGVsPiAoVHlwZTogTW9kZWwuSW5pdDxUPiwgcmVhZHk/OiAoaTogVCkgPT4gdm9pZCk6IFQ7XG5cbmZ1bmN0aW9uIHVzZShcbiAgYXJnMTogTW9kZWwuSW5pdCB8IE1vZGVsLkluc3RydWN0aW9uLFxuICBhcmcyPzogKChpOiBNb2RlbCkgPT4gdm9pZCkgfCBib29sZWFuKXtcblxuICBpZihNb2RlbC5pcyhhcmcxKSlcbiAgICBhcmcxID0gY2hpbGRJbnN0cnVjdGlvbihhcmcxLCBhcmcyKTtcblxuICBjb25zdCB0b2tlbiA9IFN5bWJvbChcImluc3RydWN0aW9uLVwiICsgdWlkKCkpO1xuICBJTlNUUlVDVElPTi5zZXQodG9rZW4sIGFyZzEpO1xuICByZXR1cm4gdG9rZW47XG59XG5cbmZ1bmN0aW9uIGNoaWxkSW5zdHJ1Y3Rpb24oXG4gIHR5cGU6IE1vZGVsLkluaXQ8TW9kZWw+LFxuICBhcmcyPzogKChpOiBNb2RlbCkgPT4gdm9pZCkgfCBib29sZWFuXG4pOiBNb2RlbC5JbnN0cnVjdGlvbjxhbnksIGFueT4ge1xuICByZXR1cm4gKGtleSwgc3ViamVjdCkgPT4ge1xuICAgIGZ1bmN0aW9uIHNldChuZXh0OiBNb2RlbCB8IHVuZGVmaW5lZCl7XG4gICAgICBpZihuZXh0ID8gIShuZXh0IGluc3RhbmNlb2YgdHlwZSkgOiBhcmcyICE9PSBmYWxzZSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3N1YmplY3R9LiR7a2V5fSBleHBlY3RlZCBNb2RlbCBvZiB0eXBlICR7dHlwZX0gYnV0IGdvdCAke25leHQgJiYgbmV4dC5jb25zdHJ1Y3Rvcn0uYCk7XG5cbiAgICAgIHVwZGF0ZShzdWJqZWN0LCBrZXksIG5leHQpO1xuXG4gICAgICBpZihuZXh0ICYmIHR5cGVvZiBhcmcyID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgYXJnMihuZXh0KTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gbmV3IHR5cGUoKTtcblxuICAgIHNldCh2YWx1ZSk7XG4gICAgUEFSRU5ULnNldCh2YWx1ZSwgc3ViamVjdCk7XG4gICAgdmFsdWUuc2V0KCk7XG5cbiAgICByZXR1cm4geyBzZXQgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0KHRoaXM6IE1vZGVsKXtcbiAgY29uc3Qgc3RhdGUgPSBTVEFURS5nZXQodGhpcykhO1xuXG4gIGZvcihjb25zdCBrZXkgaW4gdGhpcyl7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLCBrZXkpITtcbiAgICBjb25zdCBpbnN0cnVjdGlvbiA9IElOU1RSVUNUSU9OLmdldCh2YWx1ZSk7XG5cbiAgICBpZighaW5zdHJ1Y3Rpb24pXG4gICAgICBjb250aW51ZTtcblxuICAgIElOU1RSVUNUSU9OLmRlbGV0ZSh2YWx1ZSk7XG4gICAgZGVsZXRlICh0aGlzIGFzIGFueSlba2V5XTtcblxuICAgIGNvbnN0IG91dHB1dCA9IGluc3RydWN0aW9uLmNhbGwodGhpcywga2V5LCB0aGlzLCBzdGF0ZSk7XG5cbiAgICBpZighb3V0cHV0KVxuICAgICAgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNjID0gdHlwZW9mIG91dHB1dCA9PSBcIm9iamVjdFwiID8gb3V0cHV0IDogeyBnZXQ6IG91dHB1dCB9O1xuXG4gICAgaWYoXCJ2YWx1ZVwiIGluIGRlc2MpXG4gICAgICBzdGF0ZVtrZXldID0gZGVzYy52YWx1ZTtcblxuICAgIGNvbnN0IG1vZGVsID0gdGhpcztcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2RlbCwga2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiBkZXNjLmVudW1lcmFibGUgIT09IGZhbHNlLFxuICAgICAgZ2V0KHRoaXM6IE1vZGVsKXtcbiAgICAgICAgcmV0dXJuIHdhdGNoKHRoaXMsIGtleSwgXG4gICAgICAgICAgdHlwZW9mIGRlc2MuZ2V0ID09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgPyBkZXNjLmdldCh0aGlzKVxuICAgICAgICAgICAgOiBmZXRjaChtb2RlbCwga2V5LCBkZXNjLmdldClcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICBzZXQobmV4dCl7XG4gICAgICAgIGlmKGRlc2Muc2V0ID09PSBmYWxzZSlcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bW9kZWx9LiR7a2V5fSBpcyByZWFkLW9ubHkuYCk7XG5cbiAgICAgICAgdXBkYXRlKG1vZGVsLCBrZXksIG5leHQsIGRlc2Muc2V0KTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbk1vZGVsLm9uKGluaXQpO1xuXG5leHBvcnQgeyB1c2UgfSJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsT0FBTyxPQUFPLFFBQVEsT0FBTyxLQUFLLFFBQVEsYUFBYTtBQUVoRSxNQUFNLGNBQWMsb0JBQUksSUFBK0I7QUFRdkQsU0FBUyxJQUNQLE1BQ0EsTUFBc0M7QUFFdEMsTUFBRyxNQUFNLEdBQUcsSUFBSTtBQUNkLFdBQU8saUJBQWlCLE1BQU0sSUFBSTtBQUVwQyxRQUFNLFFBQVEsT0FBTyxpQkFBaUIsSUFBSSxDQUFDO0FBQzNDLGNBQVksSUFBSSxPQUFPLElBQUk7QUFDM0IsU0FBTztBQUNUO0FBRUEsU0FBUyxpQkFDUCxNQUNBLE1BQzZCO0FBQzdCLFNBQU8sQ0FBQyxLQUFLLFlBQVk7QUFDdkIsYUFBUyxJQUFJLE1BQXdCO0FBQ25DLFVBQUcsT0FBTyxFQUFFLGdCQUFnQixRQUFRLFNBQVM7QUFDM0MsY0FBTSxJQUFJLE1BQU0sR0FBRyxPQUFPLElBQUksR0FBRywyQkFBMkIsSUFBSSxZQUFZLFFBQVEsS0FBSyxXQUFXLEdBQUc7QUFFekcsYUFBTyxTQUFTLEtBQUssSUFBSTtBQUV6QixVQUFHLFFBQVEsT0FBTyxRQUFRO0FBQ3hCLGFBQUssSUFBSTtBQUVYLGFBQU87QUFBQSxJQUNUO0FBRUEsVUFBTSxRQUFRLElBQUksS0FBSztBQUV2QixRQUFJLEtBQUs7QUFDVCxXQUFPLElBQUksT0FBTyxPQUFPO0FBQ3pCLFVBQU0sSUFBSTtBQUVWLFdBQU8sRUFBRSxJQUFJO0FBQUEsRUFDZjtBQUNGO0FBRUEsU0FBUyxPQUFpQjtBQUN4QixRQUFNLFFBQVEsTUFBTSxJQUFJLElBQUk7QUFFNUIsYUFBVSxPQUFPLE1BQUs7QUFDcEIsVUFBTSxFQUFFLE1BQU0sSUFBSSxPQUFPLHlCQUF5QixNQUFNLEdBQUc7QUFDM0QsVUFBTSxjQUFjLFlBQVksSUFBSSxLQUFLO0FBRXpDLFFBQUcsQ0FBQztBQUNGO0FBRUYsZ0JBQVksT0FBTyxLQUFLO0FBQ3hCLFdBQVEsS0FBYSxHQUFHO0FBRXhCLFVBQU0sU0FBUyxZQUFZLEtBQUssTUFBTSxLQUFLLE1BQU0sS0FBSztBQUV0RCxRQUFHLENBQUM7QUFDRjtBQUVGLFVBQU0sT0FBTyxPQUFPLFVBQVUsV0FBVyxTQUFTLEVBQUUsS0FBSyxPQUFPO0FBRWhFLFFBQUcsV0FBVztBQUNaLFlBQU0sR0FBRyxJQUFJLEtBQUs7QUFFcEIsVUFBTSxRQUFRO0FBRWQsV0FBTyxlQUFlLE9BQU8sS0FBSztBQUFBLE1BQ2hDLFlBQVksS0FBSyxlQUFlO0FBQUEsTUFDaEMsTUFBZ0I7QUFDZCxlQUFPO0FBQUEsVUFBTTtBQUFBLFVBQU07QUFBQSxVQUNqQixPQUFPLEtBQUssT0FBTyxhQUNmLEtBQUssSUFBSSxJQUFJLElBQ2IsTUFBTSxPQUFPLEtBQUssS0FBSyxHQUFHO0FBQUEsUUFDaEM7QUFBQSxNQUNGO0FBQUEsTUFDQSxJQUFJLE1BQUs7QUFDUCxZQUFHLEtBQUssUUFBUTtBQUNkLGdCQUFNLElBQUksTUFBTSxHQUFHLEtBQUssSUFBSSxHQUFHLGdCQUFnQjtBQUVqRCxlQUFPLE9BQU8sS0FBSyxNQUFNLEtBQUssR0FBRztBQUFBLE1BQ25DO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUVBLFNBQU87QUFDVDtBQUVBLE1BQU0sR0FBRyxJQUFJOyIsCiAgIm5hbWVzIjogW10KfQo=