react 0.6.2 → 0.8.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.
Files changed (204) hide show
  1. package/README.md +15 -217
  2. package/ReactJSErrors.js +40 -0
  3. package/addons.js +4 -0
  4. package/lib/$.js +46 -0
  5. package/lib/CSSCore.js +114 -0
  6. package/lib/CSSProperty.js +90 -0
  7. package/lib/CSSPropertyOperations.js +97 -0
  8. package/lib/CallbackRegistry.js +91 -0
  9. package/lib/ChangeEventPlugin.js +365 -0
  10. package/lib/CompositionEventPlugin.js +212 -0
  11. package/lib/DOMChildrenOperations.js +135 -0
  12. package/lib/DOMProperty.js +266 -0
  13. package/lib/DOMPropertyOperations.js +168 -0
  14. package/lib/Danger.js +186 -0
  15. package/lib/DefaultDOMPropertyConfig.js +187 -0
  16. package/lib/DefaultEventPluginOrder.js +44 -0
  17. package/lib/EnterLeaveEventPlugin.js +112 -0
  18. package/lib/EventConstants.js +73 -0
  19. package/lib/EventListener.js +61 -0
  20. package/lib/EventPluginHub.js +190 -0
  21. package/lib/EventPluginRegistry.js +237 -0
  22. package/lib/EventPluginUtils.js +185 -0
  23. package/lib/EventPropagators.js +179 -0
  24. package/lib/ExecutionEnvironment.js +41 -0
  25. package/lib/LinkedStateMixin.js +46 -0
  26. package/lib/LinkedValueMixin.js +68 -0
  27. package/lib/MobileSafariClickEventPlugin.js +63 -0
  28. package/lib/PooledClass.js +113 -0
  29. package/lib/React.js +71 -0
  30. package/lib/ReactChildren.js +132 -0
  31. package/lib/ReactComponent.js +515 -0
  32. package/lib/ReactComponentBrowserEnvironment.js +140 -0
  33. package/lib/ReactComponentEnvironment.js +24 -0
  34. package/lib/ReactCompositeComponent.js +1020 -0
  35. package/lib/ReactCurrentOwner.js +39 -0
  36. package/lib/ReactDOM.js +194 -0
  37. package/lib/ReactDOMButton.js +64 -0
  38. package/lib/ReactDOMComponent.js +374 -0
  39. package/lib/ReactDOMForm.js +52 -0
  40. package/lib/ReactDOMIDOperations.js +173 -0
  41. package/lib/ReactDOMInput.js +169 -0
  42. package/lib/ReactDOMOption.js +50 -0
  43. package/lib/ReactDOMSelect.js +160 -0
  44. package/lib/ReactDOMSelection.js +189 -0
  45. package/lib/ReactDOMTextarea.js +136 -0
  46. package/lib/ReactDefaultBatchingStrategy.js +75 -0
  47. package/lib/ReactDefaultInjection.js +91 -0
  48. package/lib/ReactDefaultPerf.js +407 -0
  49. package/lib/ReactErrorUtils.js +46 -0
  50. package/lib/ReactEventEmitter.js +341 -0
  51. package/lib/ReactEventEmitterMixin.js +89 -0
  52. package/lib/ReactEventTopLevelCallback.js +89 -0
  53. package/lib/ReactInputSelection.js +140 -0
  54. package/lib/ReactInstanceHandles.js +322 -0
  55. package/lib/ReactLink.js +54 -0
  56. package/lib/ReactMarkupChecksum.js +53 -0
  57. package/lib/ReactMount.js +617 -0
  58. package/lib/ReactMountReady.js +95 -0
  59. package/lib/ReactMultiChild.js +441 -0
  60. package/lib/ReactMultiChildUpdateTypes.js +36 -0
  61. package/lib/ReactOwner.js +146 -0
  62. package/lib/ReactPerf.js +88 -0
  63. package/lib/ReactPropTransferer.js +128 -0
  64. package/lib/ReactPropTypes.js +158 -0
  65. package/lib/ReactReconcileTransaction.js +161 -0
  66. package/lib/ReactServerRendering.js +62 -0
  67. package/lib/ReactStateSetters.js +111 -0
  68. package/lib/ReactTextComponent.js +94 -0
  69. package/lib/ReactTransitionEvents.js +97 -0
  70. package/lib/ReactTransitionGroup.js +112 -0
  71. package/lib/ReactTransitionKeySet.js +111 -0
  72. package/lib/ReactTransitionableChild.js +152 -0
  73. package/lib/ReactUpdates.js +145 -0
  74. package/lib/ReactWithAddons.js +41 -0
  75. package/lib/SelectEventPlugin.js +217 -0
  76. package/lib/SimpleEventPlugin.js +365 -0
  77. package/lib/SyntheticClipboardEvent.js +45 -0
  78. package/lib/SyntheticCompositionEvent.js +51 -0
  79. package/lib/SyntheticEvent.js +163 -0
  80. package/lib/SyntheticFocusEvent.js +44 -0
  81. package/lib/SyntheticKeyboardEvent.js +56 -0
  82. package/lib/SyntheticMouseEvent.js +85 -0
  83. package/lib/SyntheticTouchEvent.js +50 -0
  84. package/lib/SyntheticUIEvent.js +45 -0
  85. package/lib/SyntheticWheelEvent.js +63 -0
  86. package/lib/Transaction.js +251 -0
  87. package/lib/ViewportMetrics.js +37 -0
  88. package/lib/accumulate.js +54 -0
  89. package/lib/adler32.js +39 -0
  90. package/lib/containsNode.js +49 -0
  91. package/lib/copyProperties.js +54 -0
  92. package/lib/createArrayFrom.js +94 -0
  93. package/lib/createNodesFromMarkup.js +93 -0
  94. package/lib/createObjectFrom.js +61 -0
  95. package/lib/cx.js +44 -0
  96. package/lib/dangerousStyleValue.js +57 -0
  97. package/lib/emptyFunction.js +43 -0
  98. package/lib/escapeTextForBrowser.js +47 -0
  99. package/lib/ex.js +49 -0
  100. package/lib/filterAttributes.js +45 -0
  101. package/lib/flattenChildren.js +54 -0
  102. package/lib/forEachAccumulated.js +36 -0
  103. package/lib/ge.js +76 -0
  104. package/lib/getActiveElement.js +33 -0
  105. package/lib/getEventTarget.js +36 -0
  106. package/lib/getMarkupWrap.js +108 -0
  107. package/lib/getNodeForCharacterOffset.js +80 -0
  108. package/lib/getReactRootElementInContainer.js +40 -0
  109. package/lib/getTextContentAccessor.js +40 -0
  110. package/lib/getUnboundedScrollPosition.js +45 -0
  111. package/lib/hyphenate.js +35 -0
  112. package/lib/invariant.js +54 -0
  113. package/lib/isEventSupported.js +74 -0
  114. package/lib/isNode.js +33 -0
  115. package/lib/isTextInputElement.js +49 -0
  116. package/lib/isTextNode.js +30 -0
  117. package/lib/joinClasses.js +44 -0
  118. package/lib/keyMirror.js +58 -0
  119. package/lib/keyOf.js +41 -0
  120. package/lib/memoizeStringOnly.js +39 -0
  121. package/lib/merge.js +37 -0
  122. package/lib/mergeHelpers.js +137 -0
  123. package/lib/mergeInto.js +45 -0
  124. package/lib/mixInto.js +34 -0
  125. package/lib/mutateHTMLNodeWithMarkup.js +100 -0
  126. package/lib/objMap.js +47 -0
  127. package/lib/objMapKeyVal.js +47 -0
  128. package/lib/performanceNow.js +42 -0
  129. package/lib/shallowEqual.js +49 -0
  130. package/lib/traverseAllChildren.js +127 -0
  131. package/package.json +33 -21
  132. package/react.js +4 -0
  133. package/.npmignore +0 -7
  134. package/.travis.yml +0 -5
  135. package/Jakefile.js +0 -39
  136. package/LICENSE +0 -19
  137. package/browser-test/dist.html +0 -89
  138. package/browser-test/index.html +0 -85
  139. package/browser-test/min.html +0 -89
  140. package/dist/react.js +0 -3094
  141. package/dist/react.min.js +0 -22
  142. package/doc/advanced.md +0 -166
  143. package/doc/color-def.graffle +0 -938
  144. package/doc/color-def.png +0 -0
  145. package/doc/simple.dot +0 -25
  146. package/doc/simple.png +0 -0
  147. package/examples/longer-example.js +0 -41
  148. package/examples/simple.js +0 -45
  149. package/examples/using-ast-directly.js +0 -30
  150. package/examples/using-events1.js +0 -79
  151. package/examples/using-log-events.js +0 -43
  152. package/lib/base-task.js +0 -123
  153. package/lib/cb-task.js +0 -84
  154. package/lib/core.js +0 -138
  155. package/lib/dsl.js +0 -138
  156. package/lib/error.js +0 -55
  157. package/lib/event-collector.js +0 -81
  158. package/lib/event-manager.js +0 -85
  159. package/lib/eventemitter.js +0 -20
  160. package/lib/finalcb-first-task.js +0 -68
  161. package/lib/finalcb-task.js +0 -65
  162. package/lib/id.js +0 -22
  163. package/lib/input-parser.js +0 -56
  164. package/lib/log-events.js +0 -92
  165. package/lib/parse.js +0 -41
  166. package/lib/promise-resolve.js +0 -50
  167. package/lib/promise-task.js +0 -93
  168. package/lib/react.js +0 -59
  169. package/lib/ret-task.js +0 -71
  170. package/lib/sprintf.js +0 -18
  171. package/lib/status.js +0 -14
  172. package/lib/task.js +0 -251
  173. package/lib/track-tasks.js +0 -74
  174. package/lib/validate.js +0 -159
  175. package/lib/vcon.js +0 -90
  176. package/lib/when-task.js +0 -85
  177. package/src/dist.build.requirejs +0 -20
  178. package/test/ast.mocha.js +0 -136
  179. package/test/cb-task.mocha.js +0 -220
  180. package/test/core-deferred.mocha.js +0 -143
  181. package/test/core-when.mocha.js +0 -96
  182. package/test/core.mocha.js +0 -589
  183. package/test/dsl.mocha.js +0 -350
  184. package/test/event-manager.mocha.js +0 -119
  185. package/test/exec-options.mocha.js +0 -48
  186. package/test/finalcb-task.mocha.js +0 -58
  187. package/test/input-parser.mocha.js +0 -86
  188. package/test/mocha.opts +0 -2
  189. package/test/module-use.mocha.js +0 -147
  190. package/test/promise-auto-resolve.mocha.js +0 -68
  191. package/test/ret-task.mocha.js +0 -220
  192. package/test/task.mocha.js +0 -42
  193. package/test/validate-cb-task.mocha.js +0 -100
  194. package/test/validate-ret-task.mocha.js +0 -110
  195. package/test/validate.mocha.js +0 -324
  196. package/test/vcon.mocha.js +0 -193
  197. package/vendor/chai/chai.js +0 -2038
  198. package/vendor/jquery/jquery-1.7.1.js +0 -9266
  199. package/vendor/jquery/jquery-1.7.1.min.js +0 -4
  200. package/vendor/mocha/mocha.css +0 -135
  201. package/vendor/mocha/mocha.js +0 -3589
  202. package/vendor/node/util.js +0 -531
  203. package/vendor/requirejs/require.js +0 -2053
  204. package/vendor/requirejs/require.min.js +0 -33
package/dist/react.min.js DELETED
@@ -1,22 +0,0 @@
1
- // Copyright Joyent, Inc. and other Node contributors.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a
4
- // copy of this software and associated documentation files (the
5
- // "Software"), to deal in the Software without restriction, including
6
- // without limitation the rights to use, copy, modify, merge, publish,
7
- // distribute, sublicense, and/or sell copies of the Software, and to permit
8
- // persons to whom the Software is furnished to do so, subject to the
9
- // following conditions:
10
- //
11
- // The above copyright notice and this permission notice shall be included
12
- // in all copies or substantial portions of the Software.
13
- //
14
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
17
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
21
-
22
- !function(e,t){function i(){this._events=new Object}function s(e){e&&(e.delimiter&&(this.delimiter=e.delimiter),e.wildcard&&(this.wildcard=e.wildcard),this.wildcard&&(this.listenerTree=new Object))}function o(e){this._events=new Object,s.call(this,e)}function u(e,t,n,r){if(!n)return[];var i=[],s,o,a,f,l,c,h,p=t.length,d=t[r],v=t[r+1];if(r===p&&n._listeners){if(typeof n._listeners=="function")return e&&e.push(n._listeners),[n];for(s=0,o=n._listeners.length;s<o;s++)e&&e.push(n._listeners[s]);return[n]}if(d==="*"||d==="**"||n[d]){if(d==="*"){for(a in n)a!=="_listeners"&&n.hasOwnProperty(a)&&(i=i.concat(u(e,t,n[a],r+1)));return i}if(d==="**"){h=r+1===p||r+2===p&&v==="*",h&&n._listeners&&(i=i.concat(u(e,t,n,p)));for(a in n)a!=="_listeners"&&n.hasOwnProperty(a)&&(a==="*"||a==="**"?(n[a]._listeners&&!h&&(i=i.concat(u(e,t,n[a],p))),i=i.concat(u(e,t,n[a],r))):a===v?i=i.concat(u(e,t,n[a],r+2)):i=i.concat(u(e,t,n[a],r)));return i}i=i.concat(u(e,t,n[d],r+1))}f=n["*"],f&&u(e,t,f,r+1),l=n["**"];if(l)if(r<p){l._listeners&&u(e,t,l,p);for(a in l)a!=="_listeners"&&l.hasOwnProperty(a)&&(a===v?u(e,t,l[a],r+2):a===d?u(e,t,l[a],r+1):(c={},c[a]=l[a],u(e,t,{"**":c},r+1)))}else l._listeners?u(e,t,l,p):l["*"]&&l["*"]._listeners&&u(e,t,l["*"],p);return i}function a(e,t){e=typeof e=="string"?e.split(this.delimiter):e.slice();for(var i=0,s=e.length;i+1<s;i++)if(e[i]==="**"&&e[i+1]==="**")return;var o=this.listenerTree,u=e.shift();while(u){o[u]||(o[u]=new Object),o=o[u];if(e.length===0){if(!o._listeners)o._listeners=t;else if(typeof o._listeners=="function")o._listeners=[o._listeners,t];else if(n(o._listeners)){o._listeners.push(t);if(!o._listeners.warned){var a=r;typeof this._events.maxListeners!="undefined"&&(a=this._events.maxListeners),a>0&&o._listeners.length>a&&(o._listeners.warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",o._listeners.length),console.trace())}}return!0}u=e.shift()}return!0}var n=Array.isArray?Array.isArray:function(t){return Object.prototype.toString.call(t)==="[object Array]"},r=10;o.prototype.delimiter=".",o.prototype.setMaxListeners=function(e){this._events||i.call(this),this._events.maxListeners=e},o.prototype.event="",o.prototype.once=function(e,t){return this.many(e,1,t),this},o.prototype.many=function(e,t,n){function i(){--t===0&&r.off(e,i),n.apply(this,arguments)}var r=this;if(typeof n!="function")throw new Error("many only accepts instances of Function");return i._origin=n,this.on(e,i),r},o.prototype.emit=function(){this._events||i.call(this);var e=arguments[0];if(e==="newListener"&&!this._events.newListener)return!1;if(this._all){var t=arguments.length,n=new Array(t-1);for(var r=1;r<t;r++)n[r-1]=arguments[r];for(r=0,t=this._all.length;r<t;r++)this.event=e,this._all[r].apply(this,n)}if(e==="error"&&!this._all&&!this._events.error&&(!this.wildcard||!this.listenerTree.error))throw arguments[1]instanceof Error?arguments[1]:new Error("Uncaught, unspecified 'error' event.");var s;if(this.wildcard){s=[];var o=typeof e=="string"?e.split(this.delimiter):e.slice();u.call(this,s,o,this.listenerTree,0)}else s=this._events[e];if(typeof s=="function"){this.event=e;if(arguments.length===1)s.call(this);else if(arguments.length>1)switch(arguments.length){case 2:s.call(this,arguments[1]);break;case 3:s.call(this,arguments[1],arguments[2]);break;default:var t=arguments.length,n=new Array(t-1);for(var r=1;r<t;r++)n[r-1]=arguments[r];s.apply(this,n)}return!0}if(s){var t=arguments.length,n=new Array(t-1);for(var r=1;r<t;r++)n[r-1]=arguments[r];var a=s.slice();for(var r=0,t=a.length;r<t;r++)this.event=e,a[r].apply(this,n);return a.length>0||this._all}return this._all},o.prototype.on=function(e,t){if(typeof e=="function")return this.onAny(e),this;if(typeof t!="function")throw new Error("on only accepts instances of Function");this._events||i.call(this),this.emit("newListener",e,t);if(this.wildcard)return a.call(this,e,t),this;if(!this._events[e])this._events[e]=t;else if(typeof this._events[e]=="function")this._events[e]=[this._events[e],t];else if(n(this._events[e])){this._events[e].push(t);if(!this._events[e].warned){var s=r;typeof this._events.maxListeners!="undefined"&&(s=this._events.maxListeners),s>0&&this._events[e].length>s&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),console.trace())}}return this},o.prototype.onAny=function(e){this._all||(this._all=[]);if(typeof e!="function")throw new Error("onAny only accepts instances of Function");return this._all.push(e),this},o.prototype.addListener=o.prototype.on,o.prototype.off=function(e,t){if(typeof t!="function")throw new Error("removeListener only takes instances of Function");var r,i=[];if(this.wildcard){var s=typeof e=="string"?e.split(this.delimiter):e.slice();i=u.call(this,null,s,this.listenerTree,0)}else{if(!this._events[e])return this;r=this._events[e],i.push({_listeners:r})}for(var o=0;o<i.length;o++){var a=i[o];r=a._listeners;if(n(r)){var f=-1;for(var l=0,c=r.length;l<c;l++)if(r[l]===t||r[l].listener&&r[l].listener===t||r[l]._origin&&r[l]._origin===t){f=l;break}if(f<0)return this;this.wildcard?a._listeners.splice(f,1):this._events[e].splice(f,1),r.length===0&&(this.wildcard?delete a._listeners:delete this._events[e])}else if(r===t||r.listener&&r.listener===t||r._origin&&r._origin===t)this.wildcard?delete a._listeners:delete this._events[e]}return this},o.prototype.offAny=function(e){var t=0,n=0,r;if(e&&this._all&&this._all.length>0){r=this._all;for(t=0,n=r.length;t<n;t++)if(e===r[t])return r.splice(t,1),this}else this._all=[];return this},o.prototype.removeListener=o.prototype.off,o.prototype.removeAllListeners=function(e){if(arguments.length===0)return!this._events||i.call(this),this;if(this.wildcard){var t=typeof e=="string"?e.split(this.delimiter):e.slice(),n=u.call(this,null,t,this.listenerTree,0);for(var r=0;r<n.length;r++){var s=n[r];s._listeners=null}}else{if(!this._events[e])return this;this._events[e]=null}return this},o.prototype.listeners=function(e){if(this.wildcard){var t=[],r=typeof e=="string"?e.split(this.delimiter):e.slice();return u.call(this,t,r,this.listenerTree,0),t}return this._events||i.call(this),this._events[e]||(this._events[e]=[]),n(this._events[e])||(this._events[e]=[this._events[e]]),this._events[e]},o.prototype.listenersAny=function(){return this._all?this._all:[]},typeof define=="function"&&define.amd?define("eventemitter2",[],function(){return o}):e.EventEmitter2=o}(typeof process!="undefined"&&typeof process.title!="undefined"&&typeof exports!="undefined"?exports:window),define("react/eventemitter",["eventemitter2"],function(e){var t=e?e.EventEmitter2?e.EventEmitter2:e:EventEmitter2;return t}),define("util",["require","exports","module"],function(e,t,n){function s(e,t,n,r){var i={showHidden:t,seen:[],stylize:r?a:f};return l(i,e,typeof n=="undefined"?2:n)}function a(e,t){var n=u[t];return n?"["+o[n][0]+"m"+e+"["+o[n][1]+"m":e}function f(e,t){return e}function l(e,n,r){if(n&&typeof n.inspect=="function"&&n.inspect!==t.inspect&&(!n.constructor||n.constructor.prototype!==n))return n.inspect(r);var i=c(e,n);if(i)return i;var s=Object.keys(n),o=e.showHidden?Object.getOwnPropertyNames(n):s;if(o.length===0){if(typeof n=="function"){var u=n.name?": "+n.name:"";return e.stylize("[Function"+u+"]","special")}if(g(n))return e.stylize(RegExp.prototype.toString.call(n),"regexp");if(y(n))return e.stylize(Date.prototype.toString.call(n),"date");if(b(n))return h(n)}var a="",f=!1,l=["{","}"];m(n)&&(f=!0,l=["[","]"]);if(typeof n=="function"){var w=n.name?": "+n.name:"";a=" [Function"+w+"]"}g(n)&&(a=" "+RegExp.prototype.toString.call(n)),y(n)&&(a=" "+Date.prototype.toUTCString.call(n)),b(n)&&(a=" "+h(n));if(o.length!==0||!!f&&n.length!==0){if(r<0)return g(n)?e.stylize(RegExp.prototype.toString.call(n),"regexp"):e.stylize("[Object]","special");e.seen.push(n);var E;return f?E=p(e,n,r,s,o):E=o.map(function(t){return d(e,n,r,s,t,f)}),e.seen.pop(),v(E,a,l)}return l[0]+a+l[1]}function c(e,t){switch(typeof t){case"undefined":return e.stylize("undefined","undefined");case"string":var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string");case"number":return e.stylize(""+t,"number");case"boolean":return e.stylize(""+t,"boolean")}if(t===null)return e.stylize("null","null")}function h(e){return"["+Error.prototype.toString.call(e)+"]"}function p(e,t,n,r,i){var s=[];for(var o=0,u=t.length;o<u;++o)Object.prototype.hasOwnProperty.call(t,String(o))?s.push(d(e,t,n,r,String(o),!0)):s.push("");return i.forEach(function(i){i.match(/^\d+$/)||s.push(d(e,t,n,r,i,!0))}),s}function d(e,t,n,r,i,s){var o,u,a;a=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]},a.get?a.set?u=e.stylize("[Getter/Setter]","special"):u=e.stylize("[Getter]","special"):a.set&&(u=e.stylize("[Setter]","special")),r.indexOf(i)<0&&(o="["+i+"]"),u||(e.seen.indexOf(a.value)<0?(n===null?u=l(e,a.value,null):u=l(e,a.value,n-1),u.indexOf("\n")>-1&&(s?u=u.split("\n").map(function(e){return" "+e}).join("\n").substr(2):u="\n"+u.split("\n").map(function(e){return" "+e}).join("\n"))):u=e.stylize("[Circular]","special"));if(typeof o=="undefined"){if(s&&i.match(/^\d+$/))return u;o=JSON.stringify(""+i),o.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+u}function v(e,t,n){var r=0,i=e.reduce(function(e,t){return r++,t.indexOf("\n")>=0&&r++,e+t.length+1},0);return i>60?n[0]+(t===""?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1]:n[0]+t+" "+e.join(", ")+" "+n[1]}function m(e){return Array.isArray(e)||typeof e=="object"&&w(e)==="[object Array]"}function g(e){return typeof e=="object"&&w(e)==="[object RegExp]"}function y(e){return typeof e=="object"&&w(e)==="[object Date]"}function b(e){return typeof e=="object"&&w(e)==="[object Error]"}function w(e){return Object.prototype.toString.call(e)}function E(e){return e<10?"0"+e.toString(10):e.toString(10)}function x(){var e=new Date,t=[E(e.getHours()),E(e.getMinutes()),E(e.getSeconds())].join(":");return[e.getDate(),S[e.getMonth()],t].join(" ")}var r=/%[sdj%]/g;t.format=function(e){if(typeof e!="string"){var t=[];for(var n=0;n<arguments.length;n++)t.push(s(arguments[n]));return t.join(" ")}var i=1,o=arguments,u=o.length,a=String(e).replace(r,function(e){if(e==="%%")return"%";if(i>=u)return e;switch(e){case"%s":return String(o[i++]);case"%d":return Number(o[i++]);case"%j":return JSON.stringify(o[i++]);default:return e}});for(var f=o[i];i<u;f=o[++i])f===null||typeof f!="object"?a+=" "+f:a+=" "+s(f);return a},t.print=function(){for(var e=0,t=arguments.length;e<t;++e)process.stdout.write(String(arguments[e]))},t.puts=function(){for(var e=0,t=arguments.length;e<t;++e)process.stdout.write(arguments[e]+"\n")},t.debug=function(e){process.stderr.write("DEBUG: "+e+"\n")};var i=t.error=function(e){for(var t=0,n=arguments.length;t<n;++t)process.stderr.write(arguments[t]+"\n")};t.inspect=s;var o={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},u={special:"cyan",number:"yellow","boolean":"yellow","undefined":"grey","null":"bold",string:"green",date:"magenta",regexp:"red"};t.isArray=m,t.isRegExp=g,t.isDate=y,t.isError=b;var S=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];t.log=function(e){t.puts(x()+" - "+e.toString())},t.pump=function(e,t,n){function i(e,t,i){n&&!r&&(n(e,t,i),r=!0)}var r=!1;e.addListener("data",function(n){t.write(n)===!1&&e.pause()}),t.addListener("drain",function(){e.resume()}),e.addListener("end",function(){t.end()}),e.addListener("close",function(){i()}),e.addListener("error",function(e){t.end(),i(e)}),t.addListener("error",function(t){e.destroy(),i(t)})},t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t._extend=function(e,t){if(!t)return e;var n=Object.keys(t),r=n.length;while(r--)e[n[r]]=t[n[r]];return e}}),define("react/error",["util"],function(e){function t(e){if(!Error.stackTraceLimit||Error.stackTraceLimit<e)Error.stackTraceLimit=e}function n(e){return e?e&&e.name?e.name:e:"undefined"}function r(t){if(!t.meta)return;var r=t.meta.vcon,i=t.meta.task,s="\n\n";return i&&i.f&&i.a&&(s+="Error occurs in Task function: "+n(i.f)+"("+i.a.join(",")+")\n\n"),r&&(s+="Variable Context: \n",s+=e.inspect(r),s+="\n\n"),i&&i.f&&(s+="Task Source:\n\n",s+=i.f.toString(),s+="\n\n"),s}function i(e,t){typeof e=="string"&&(e=new Error(e));var n=e.toString();return e.meta=t,e.toString=function(){return n+r(e)},e}return{ensureStackTraceLimitSet:t,augmentError:i}}),define("react/sprintf",["util"],function(e){var t=e.format;return t}),function(e,t){typeof exports=="object"?module.exports=t():typeof define=="function"&&define.amd?define("ensure-array",[],t):e.ensureArray=t()}(this,function(){function e(e,t,n){if(arguments.length===0)return[];if(arguments.length===1){if(e===undefined||e===null)return[];if(Array.isArray(e))return e}return Array.prototype.slice.call(arguments)}return e}),define("react/status",[],function(){var e={READY:"ready",RUNNING:"running",ERRORED:"errored",COMPLETE:"complete"};return e}),define("react/event-manager",["./eventemitter"],function(e){function i(){}var t={wildcard:!0,delimiter:".",maxListeners:30},n=/^ast.defined$/,r={AST_DEFINED:"ast.defined",FLOW_BEGIN:"flow.begin",TASK_BEGIN:"task.begin",TASK_COMPLETE:"task.complete",TASK_ERRORED:"task.errored",FLOW_COMPLETE:"flow.complete",FLOW_ERRORED:"flow.errored",EXEC_FLOW_START:"exec.flow.start",EXEC_INPUT_PREPROCESS:"exec.input.preprocess",EXEC_TASKS_PRECREATE:"exec.tasks.precreate",EXEC_OUTTASK_CREATE:"exec.outTask.create",EXEC_TASK_START:"exec.task.start",EXEC_TASK_COMPLETE:"exec.task.complete",EXEC_TASK_ERRORED:"exec.task.errored",EXEC_FLOW_COMPLETE:"exec.flow.complete",EXEC_FLOW_ERRORED:"exec.flow.errored"};return i.create=function(){return new i},i.TYPES=r,i.prototype.TYPES=r,i.prototype.isEnabled=function(){return!!(this.emitter||this.parent&&this.parent.isEnabled())},i.prototype.on=function(n,r){this.emitter||(this.emitter=new e(t)),n==="*"?this.emitter.onAny(r):this.emitter.on(n,r)},i.prototype.emit=function(e,t,r,i){if(e===undefined)throw new Error("event is undefined");this.emitter&&this.emitter.emit.apply(this.emitter,arguments),this.parent&&this.parent.isEnabled()&&this.parent.emit.apply(this.parent,arguments),n.test(e)&&typeof process!="undefined"&&process.emit&&process.emit.apply(process,arguments)},i.prototype.removeListener=function(e,t){this.emitter&&this.emitter.removeListener.apply(this.emitter,arguments)},i.global=i.create(),i}),define("react/base-task",["ensure-array","./status","./event-manager"],function(e,t,n){function r(){}function i(e){return e.indexOf(".")!==-1}return r.prototype.getOutParams=function(){return e(this.out)},r.prototype.isComplete=function(){return this.status===t.COMPLETE},r.prototype.start=function(e){this.args=e,this.env.currentTask=this,this.env.flowEmitter.emit(n.TYPES.EXEC_TASK_START,this)},r.prototype.complete=function(e){this.status=t.COMPLETE,this.results=e,this.env.currentTask=this,this.env.flowEmitter.emit(n.TYPES.EXEC_TASK_COMPLETE,this)},r.prototype.functionExists=function(e){var t=this.f;if(!t)return!1;if(t instanceof Function)return!0;if(typeof t=="string"){var n=e.getVar(t);if(n&&n instanceof Function)return!0}return!1},r.prototype.areAllDepArgsDefined=function(e){return this.a.every(function(t){return e.getVar(t)!==undefined})},r.prototype.depTasksAreDone=function(e){return!this.after||!this.after.length||this.after.every(function(t){return e[t].isComplete()})},r.prototype.parentExists=function(e,t){if(!i(e))return!0;var n=e.split(".");n.pop();var r=n.reduce(function(e,t){return e===undefined||e===null?undefined:e[t]},t.values);return r!==undefined&&r!==null},r.prototype.outParentsExist=function(e){var t=this;return this.getOutParams().every(function(n){return n===null?!0:t.parentExists(n,e)})},r.prototype.isReady=function(e,t){return!this.status&&this.functionExists(e)&&this.areAllDepArgsDefined(e)&&this.depTasksAreDone(t)&&(!this.outParentsExist||this.outParentsExist(e))},r.prototype.isMethodCall=function(){return typeof this.f=="string"&&/^.*\..*$/.test(this.f)},r.prototype.getMethodObj=function(e){var t=this.f;if(!t)return undefined;var n=t.split(".");n.pop();if(!n.length)return undefined;var r=n.reduce(function(e,t){return e===undefined||e===null?undefined:e[t]},e.values);return r},r}),define("react/cb-task",["util","./sprintf","./base-task"],function(e,t,n){function r(n,r){return t("%s - %s",n,e.inspect(r))}function a(e){var t=this;Object.keys(e).forEach(function(n){t[n]=e[n]})}var i="cbTask requires f, a, out",s="cbTask requires f to be a function or string",o="cbTask requires a to be an array of string param names",u="cbTask requires out to be an array of string param names";return a.prototype=new n,a.prototype.constructor=a,a.validate=function(e){var t=[];if(!e.f||!e.a||!e.out)t.push(r(i,e));else{var n=typeof e.f;e.f instanceof Function||n==="string"||t.push(r(s,e)),(!Array.isArray(e.a)||!e.a.every(function(e){return typeof e=="string"}))&&t.push(r(o,e)),(!Array.isArray(e.out)||!e.out.every(function(e){return typeof e=="string"}))&&t.push(r(u,e))}return t},a.prototype.prepare=function(t,n,r){var i=this;this.cbFun=function(e,s,o,u){var a=Array.prototype.slice.call(arguments,1);if(e){t(i,e);return}n.saveResults(i.out,a),i.complete(a),r()}},a.prototype.exec=function(t,n,r){try{var i=this.a.map(function(e){return t.getVar(e)});this.start(i),i.push(this.cbFun);var s=this.f,o=t.getVar("this");this.isMethodCall()?(s=t.getVar(this.f),o=this.getMethodObj(t)):typeof s=="string"&&(s=t.getVar(s)),s.apply(o,i)}catch(u){n(this,u)}},a}),define("react/promise-task",["util","./sprintf","./base-task"],function(e,t,n){function r(n,r){return t("%s - %s",n,e.inspect(r))}function a(e){var t=this;Object.keys(e).forEach(function(n){t[n]=e[n]})}var i="promiseTask requires f, a, out",s="promiseTask requires f to be a function or string",o="promiseTask requires a to be an array of string param names",u="promiseTask requires out to be an array[1] of string param names";return a.prototype=new n,a.prototype.constructor=a,a.validate=function(e){var t=[];if(!e.f||!e.a||!e.out)t.push(r(i,e));else{var n=typeof e.f;e.f instanceof Function||n==="string"||t.push(r(s,e)),(!Array.isArray(e.a)||!e.a.every(function(e){return typeof e=="string"}))&&t.push(r(o,e)),Array.isArray(e.out)&&e.out.length<=1&&e.out.every(function(e){return typeof e=="string"})||t.push(r(u,e))}return t},a.prototype.prepare=function(t,n,r){var i=this;this.nextFn=function(e){var t=Array.prototype.slice.call(arguments);n.saveResults(i.out,t),i.complete(t),r()},this.failFn=function(e){t(i,e)}},a.prototype.exec=function(t,n,r){try{var i=this.a.map(function(e){return t.getVar(e)});this.start(i);var s=this.f,o=t.getVar("this");this.isMethodCall()?(s=t.getVar(this.f),o=this.getMethodObj(t)):typeof s=="string"&&(s=t.getVar(s));var u=s.apply(o,i);u&&typeof u.then=="function"?u.then(this.nextFn,this.failFn):this.nextFn(u)}catch(a){n(this,a)}},a}),define("react/ret-task",["util","./sprintf","./base-task"],function(e,t,n){function r(n,r){return t("%s - %s",n,e.inspect(r))}function a(e){var t=this;Object.keys(e).forEach(function(n){t[n]=e[n]})}var i="retTask requires f, a, out",s="retTask requires f to be a function or string",o="retTask requires a to be an array of string param names",u="retTask requires out to be an array with single string param name or []";return a.prototype=new n,a.prototype.constructor=a,a.validate=function(e){var t=[];if(!e.f||!e.a||!e.out)t.push(r(i,e));else{var n=typeof e.f;e.f instanceof Function||n==="string"||t.push(r(s,e)),(!Array.isArray(e.a)||!e.a.every(function(e){return typeof e=="string"}))&&t.push(r(o,e)),(!Array.isArray(e.out)||!(e.out.length===0||e.out.length===1&&typeof (e.out[0]==="string")))&&t.push(r(u,e))}return t},a.prototype.exec=function(t,n,r){try{var i=this.a.map(function(e){return t.getVar(e)});this.start(i);var s=this.f,o=t.getVar("this");this.isMethodCall()?(s=t.getVar(this.f),o=this.getMethodObj(t)):typeof s=="string"&&(s=t.getVar(s));var u=[s.apply(o,i)];t.saveResults(this.out,u),this.complete(u),r()}catch(a){n(this,a)}},a}),define("react/when-task",["util","./sprintf","./base-task"],function(e,t,n){function r(n,r){return t("%s - %s",n,e.inspect(r))}function u(e){var t=this;Object.keys(e).forEach(function(n){t[n]=e[n]})}var i="whenTask requires a, out",s="whenTask requires a to be an array[1] of string param names",o="whenTask requires out to be an array[1] of string param names";return u.prototype=new n,u.prototype.constructor=u,u.prototype.f=function(){},u.validate=function(e){var t=[];return!e.a||!e.out?t.push(r(i,e)):((!Array.isArray(e.a)||e.a.length!==1||!e.a.every(function(e){return typeof e=="string"}))&&t.push(r(s,e)),Array.isArray(e.out)&&e.out.length<=1&&e.out.every(function(e){return typeof e=="string"})||t.push(r(o,e))),t},u.prototype.prepare=function(t,n,r){var i=this;this.nextFn=function(e){var t=Array.prototype.slice.call(arguments);n.saveResults(i.out,t),i.complete(t),r()},this.failFn=function(e){t(i,e)}},u.prototype.exec=function(t,n,r){try{var i=this.a.map(function(e){return t.getVar(e)});this.start(i);var s=i[0];s&&typeof s.then=="function"?s.then(this.nextFn,this.failFn):this.nextFn(s)}catch(o){n(this,o)}},u}),define("react/finalcb-task",["./sprintf","util","./status","./event-manager"],function(e,t,n,r){function s(e){var t=e.taskDef;if(typeof e.cbFunc!="function")throw new Error("callback is not a function");var n=this;for(var r in t)n[r]=t[r];this.f=e.cbFunc,this.tasks=e.tasks,this.vCon=e.vCon,this.retValue=e.retValue,this.execOptions=e.execOptions,this.env=e.env}function o(n,r){return e("%s - %s",n,t.inspect(r))}var i="ast.outTask.a should be an array of string param names";return s.validate=function(e){var t=[];return(!Array.isArray(e.a)||!e.a.every(function(e){return typeof e=="string"}))&&t.push(o(i,e)),t},s.prototype.isReady=function(){return this.tasks.every(function(e){return e.status===n.COMPLETE})},s.prototype.exec=function(e){if(!this.f)return;if(e)this.env.error=e,this.env.flowEmitter.emit(r.TYPES.EXEC_FLOW_ERRORED,this.env),this.f.call(null,e);else{var t=this.vCon,n=this.a.map(function(e){return t.getVar(e)});n.unshift(null),this.env.results=n,this.env.flowEmitter.emit(r.TYPES.EXEC_FLOW_COMPLETE,this.env),this.f.apply(null,n)}this.f=null},s}),define("react/vcon",[],function(){function t(){}var e=":LAST_RESULTS";return t.prototype.getLastResults=function(){return this.getVar(e)},t.prototype.setLastResults=function(t){this.setVar(e,t)},t.prototype.getVar=function(e){var t=this.values;if(typeof e!="string")return e;e=e.trim();if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;if(/^-?[0-9]+$/.test(e))return parseInt(e,10);if(/^-?[0-9.]+$/.test(e))return parseFloat(e);var n=/^("|')([^\1]*)\1$/.exec(e);if(n)return n[2];var r=e.split(".");return r.reduce(function(e,t){return e===undefined||e===null?undefined:e[t]},t)},t.prototype.saveResults=function(e,t){var n=this;e.forEach(function(e,r){n.setVar(e,t[r]!==undefined?t[r]:null)}),this.setLastResults(t)},t.prototype.setVar=function(e,t){if(!e)return;var n=this.values,r=e.split("."),i=r.pop(),s=r.reduce(function(e,t){var n=e[t];if(n===undefined||n===null)n=e[t]={};return n},n);s[i]=t},t.create=function(e,n,r,i){var s={};i&&(s["this"]=i),r&&Object.keys(r).forEach(function(e){s[e]=r[e]});var o=new t;return o.values=e.reduce(function(e,t,r){var i=n[r];return i&&(e[i]=t!==undefined?t:null),e},s),o},t}),define("react/finalcb-first-task",["./sprintf","util","./status","./vcon","./event-manager"],function(e,t,n,r,i){function o(e){var t=e.taskDef;if(typeof e.cbFunc!="function")throw new Error("callback is not a function");var n=this;for(var r in t)n[r]=t[r];this.f=e.cbFunc,this.tasks=e.tasks,this.vCon=e.vCon,this.retValue=e.retValue,this.env=e.env}function u(n,r){return e("%s - %s",n,t.inspect(r))}var s="ast.outTask.a should be an array of string param names";return o.validate=function(e){var t=[];return(!Array.isArray(e.a)||!e.a.every(function(e){return typeof e=="string"}))&&t.push(u(s,e)),t},o.prototype.isReady=function(){var e=this.vCon.getLastResults();return e?e.some(function(e){return e!==undefined&&e!==null}):!1},o.prototype.exec=function(e){if(!this.f)return;if(e)this.env.error=e,this.env.flowEmitter.emit(i.TYPES.EXEC_FLOW_ERRORED,this.env),this.f.call(null,e);else{var t=this.vCon,n=this.a.map(function(e){return t.getVar(e)});n.unshift(null),this.env.results=n,this.env.flowEmitter.emit(i.TYPES.EXEC_FLOW_COMPLETE,this.env),this.f.apply(null,n)}this.f=null},o}),define("react/task",["util","./sprintf","ensure-array","./cb-task","./promise-task","./ret-task","./when-task","./finalcb-task","./finalcb-first-task","./status","./error","./vcon","./event-manager"],function(e,t,n,r,i,s,o,u,a,f,l,c,h){function v(){return Object.keys(p)}function g(){return Object.keys(m)}function S(n,r){return t("%s - %s",n,e.inspect(r))}function x(e){return e.type?e:(e.type="cb",e)}function T(e){e.type||(e.type=Object.keys(m)[0])}function N(e){if(!e.after)return;var t=n(e.after);t=t.map(function(e){return typeof e=="function"?e.name:e}),e.after=t}function C(e){if(!e||typeof e!="object")return[S(b,e)];x(e),N(e);var t=[];return t=t.concat(k(e)),t=t.concat(L(e)),t}function k(e){var t=[];return Object.keys(p).some(function(t){return e.type===t})||t.push(S(E,e)),t}function L(e){var t=[],n=p[e.type];return n&&(t=t.concat(n.validate(e))),t}function A(e){var t=[];T(e);var n=m[e.type];return t=t.concat(n.validate(e)),t}function O(e,n,r){function s(){}var i=[],o=e.map(function(e){return s}),u=c.create(o,e,r),a=n.map(D),f=a.filter(function(e){return e.type!=="when"});return f.forEach(function(e,n){if(!e.functionExists(u))if(!e.isMethodCall())i.push(t(y,e.f,n));else{var r=e.getMethodObj(u);r&&r!==s&&i.push(t(y,e.f,n))}}),i}function M(e){return typeof e=="function"?e.name:e?e:""}function _(e){var n=e.reduce(function(e,t){return t.name&&(e[t.name]=t),e},{});return e.forEach(function(e,r){if(!e.name){var i=M(e.f);i||(i=t(d,r));if(!i||n[i])i=t("%s_%s",i,r);e.name=i,n[i]=e}}),n}function D(e){var t=p[e.type];return new t(e)}function P(e,t,n,r,i,s){T(e);var o={taskDef:e,cbFunc:t,tasks:n,vCon:r,execOptions:i,env:s,TaskConstructor:m[e.type]};h.global.emit(h.TYPES.EXEC_OUTTASK_CREATE,o);var u=o.TaskConstructor;return new u(o)}function H(e,t){return function(r,i){r.status=f.ERRORED,r.error=i,t.env.currentTask=r,t.env.flowEmitter.emit(h.TYPES.EXEC_TASK_ERRORED,r);var s=l.augmentError(i,{task:r,vcon:e});t.exec(s)}}function B(e,t,n){return t.filter(function(t){return t.isReady(e,n)})}function j(e,t,n,r){e.forEach(function(e){e.status=f.READY}),e.forEach(function(e){e.exec(t,n,r)})}function F(e,n,r,i){var s=n.filter(function(e){return e.status===f.RUNNING||e.status===f.READY});if(!s.length){var o=n.filter(function(e){return!e.status}),u=o.map(function(e){return e.name}),a=t(w,u.join(", ")),l={env:i};r(l,new Error(a))}}function I(e,t,n,r,i,s){var o=B(e,t,n);o.length||F(e,t,r,s),j(o,e,r,i)}function q(e){return _(e),e.forEach(function(e,t,n){t!==0&&(e.after=[n[t-1].name])}),e}var p={cb:r,ret:s,promise:i,when:o},d="task_%s",m={finalcb:u,finalcbFirst:a},y="function: %s not found in locals or input params - task[%s]",b="task must be an object",w="no tasks running, flow will not complete, remaining tasks: %s",E="task.type should match one of "+Object.keys(p).join(", ");return{serializeTasks:q,TASK_TYPES:p,taskTypeKeys:v,OUT_TASK_TYPES:m,outTaskTypeKeys:g,setMissingType:x,validate:C,validateOutTask:A,validateLocalFunctions:O,nameTasks:_,create:D,createOutTask:P,createErrorHandler:H,findReadyAndExec:I}}),define("react/validate",["util","./sprintf","ensure-array","./task"],function(e,t,n,r){function h(n,r){return t("%s - %s",n,e.inspect(r))}function p(e){return c.test(e)}function d(e){if(!e||!e.inParams||!e.tasks||!e.outTask)return[i];var t=[];return t=t.concat(v(e.inParams)),t=t.concat(m(e.tasks)),t=t.concat(g(e.tasks)),t=t.concat(r.validateOutTask(e.outTask)),t=t.concat(y(e.locals)),t.length===0&&(e.outTask.type!=="finalcbFirst"&&(t=t.concat(w(e.tasks))),t=t.concat(r.validateLocalFunctions(e.inParams,e.tasks,e.locals)),t=t.concat(E(e))),t}function v(e){return!Array.isArray(e)||!e.every(function(e){return typeof e=="string"})?[s]:[]}function m(e){if(!Array.isArray(e))return[o];var t=[];return e.forEach(function(e){t=t.concat(r.validate(e))}),t}function g(e){if(!Array.isArray(e))return[];var n=[],r=e.filter(function(e){return e.name}),i=r.map(function(e){return e.name});return i.reduce(function(e,r){return e[r]?n.push(t("%s %s",u,r)):e[r]=!0,e},{}),n}function y(e){var t=[];return e===null&&t.push(a),t}function b(e){return n(e.out)}function w(e){var n=[];return e.reduce(function(e,r){return b(r).forEach(function(r){e[r]!==undefined?n.push(t("%s: %s",f,r)):e[r]=!0}),e},{}),n}function E(e){var n=[],r={};return e.locals&&(r=Object.keys(e.locals).reduce(function(e,t){return e[t]=!0,e},r)),e.inParams.reduce(function(e,t){return e[t]=!0,e},r),e.tasks.reduce(function(e,t){return t.out.reduce(function(e,t){return e[t]=!0,e},e)},r),e.tasks.reduce(function(e,n){return n.a.reduce(function(e,n){return!p(n)&&!r[n]&&e.push(t(l,n)),e},e)},n),e.outTask.a.reduce(function(e,n){return!p(n)&&!r[n]&&e.push(t(l,n)),e},n),n}var i="ast must be an object with inParams, tasks, and outTask",s="ast.inParams must be an array of strings",o="ast.tasks must be an array of tasks",u="ast.tasks that specify name need to be unique, duplicate:",a="ast.locals should not be null",f="multiple tasks output the same param, must be unique. param",l="missing or mispelled variable referenced in flow definition: %s",c=/^(true|false|this|null|\-?[0-9\.]+)$|'|"|\./i;return d}),define("react/input-parser",["./event-manager"],function(e){function r(e){return e&&e.reactExecOptions}function i(e){return r(e)}function s(e){return!r(e)}function o(e,t){return Object.keys(t).forEach(function(n){e[n]=t[n]}),e}function u(e,t,r){var i={};return i.args=t.map(function(t){return e.shift()}),r===n.CALLBACK&&e.length&&(i.cb=e.shift()),i.extra=e,i}function a(n,r){var a={},f=n.filter(i);f.unshift(t),a.options=f.reduce(o,{});var l=n.filter(s),c=u(l,r.inParams,a.options.outputStyle);return a.args=c.args,a.cb=c.cb,c.outputStyle&&(a.options.outputStyle=c.outputStyle),c.extra&&(a.extraArgs=c.extra),e.global.emit(e.TYPES.EXEC_INPUT_PREPROCESS,a),a}var t={reactExecOptions:!0,outputStyle:"cb"},n={CALLBACK:"cb",NONE:"none"};return a.defaultExecOptions=t,a}),define("react/id",[],function(){function t(){return e+=1,e===Number.MAX_VALUE&&(e=0),e}var e=0;return{createUniqueId:t}}),define("react/core",["./eventemitter","./error","./validate","./task","./status","./vcon","./event-manager","./input-parser","./id","./sprintf"],function(e,t,n,r,i,s,o,u,a,f){function h(e){return Object.keys(l).reduce(function(e,t){return e[t]||(e[t]=l[t]),e},e)}function p(){return f("flow_%s",a.createUniqueId())}function d(){function f(t){Object.keys(t).forEach(function(e){i[e]=t[e]});var s=n(i);return s.length||(i.name||(i.name=p()),r.nameTasks(i.tasks)),Object.freeze&&(Object.keys(t).forEach(function(e){typeof t[e]=="object"&&Object.freeze(t[e])}),Object.freeze(t)),e.emit(o.TYPES.AST_DEFINED,i),s}function d(t,n,f,l){function E(){if(!b.f)return;if(b.isReady())return b.exec();r.findReadyAndExec(m,g,y,w,E,d)}var p=Array.prototype.slice.call(arguments),d={execId:a.createUniqueId(),args:p,ast:i,flowEmitter:e};d.name=i.name||d.execId,e.emit(o.TYPES.EXEC_FLOW_START,d);var v=u(p,i),m=s.create(v.args,i.inParams,i.locals,this);d.parsedInput=v,d.options=h(v.options),d.vCon=m,d.taskDefs=i.tasks.slice(),d.outTaskDef=Object.create(i.outTask),c.emit(o.TYPES.EXEC_TASKS_PRECREATE,d);var g=d.taskDefs.map(r.create),y=r.nameTasks(g),b=r.createOutTask(d.outTaskDef,v.cb,g,m,d.options,d),w=r.createErrorHandler(m,b);return g.forEach(function(t){t.id=a.createUniqueId(),t.env=d,t.prepare&&t.prepare(w,m,E,e)}),E(),b.retValue}if(arguments.length)throw new Error("react() takes no args, check API");t.ensureStackTraceLimitSet(l.stackTraceLimitMin);var e=o.create();e.parent=c;var i={name:undefined,inParams:[],tasks:[],outTask:{},locals:{}},v=d;return v.ast=i,v.setAndValidateAST=f,v.events=e,v}var l={stackTraceLimitMin:30},c=o.global;return d.options=l,d.events=c,d}),define("react/parse",["./sprintf"],function(e){function t(e){return e?e.split(",").map(function(e){return e.trim()}).filter(function(e){return e}):[]}function n(e,t){if(typeof e!="string")return e;var n=t.regex?t.regex.exec(e):e.split(t.splitStr);return n?t.fn(n,e):e}function r(t,r,i){var s=r.reduce(n,t);if(typeof s!="string")return s;throw new Error(e(i,t))}return{splitTrimFilterArgs:t,parseStr:r}}),define("react/dsl",["./sprintf","./core","./parse","./task"],function(e,t,n,r){function h(e){return e.length&&e[e.length-1].match(l)&&e.pop(),e}function p(e){return e.length&&e[0].match(c)&&e.shift(),e}function v(e){var t=n.parseStr(e,[d],s);return t.inDef=h(t.inDef),t}function m(t){var n=[],r,i,s;while(t.length>=2){i={},r=t.shift(),s=v(t.shift()),typeof t[0]=="object"&&(i=t.shift()),i.f=r,i.a=s.inDef;var o=s.type;i.out=s.outDef,i.type=o,n.push(i)}if(t.length)throw new Error(e(a,t[0]));return n}function g(e){var t=e.shift()||"",n=e.length&&typeof e[0]=="object"?e.shift():{},r=e,i={inOutParamStr:t,taskDefArr:r,options:n};return i}function y(n,r,s,o){var u=t();if(n&&f.test(n))throw new Error(e(i,n));var a=g(Array.prototype.slice.call(arguments,1)),l=v(a.inOutParamStr),c={name:n,inParams:l.inDef,tasks:m(a.taskDefArr),outTask:{a:l.outDef}};a.options&&Object.keys(a.options).forEach(function(e){c[e]=a.options[e]});var h=u.setAndValidateAST(c);if(h.length){var p=h.join("\n");throw new Error(p)}return u}function b(e,n,i,s){var o=t(),u=g(Array.prototype.slice.call(arguments,1)),a=v(u.inOutParamStr),f=r.serializeTasks(m(u.taskDefArr)),l={name:e,inParams:a.inDef,tasks:f,outTask:{type:"finalcbFirst",a:a.outDef}};u.options&&Object.keys(u.options).forEach(function(e){l[e]=u.options[e]});var c=o.setAndValidateAST(l);if(c.length){var h=c.join("\n");throw new Error(h)}return o}var i="first flow parameter should be the flow name, but found in/out def: %s",s='params in wrong format, wanted "foo, bar, cb -> err, baz" - found: %s',o='callback specified, but first out param was not "err", use for clarity. Found in/out def: %s',u="found err param, but cb/callback is not specified, is this cb-style async or sync function? Found in/out def: %s",a="extra unmatched task arg: %s",f=/\->/,l=/^cb|callback$/i,c=/^err$/i,d={splitStr:"->",fn:function(t,r){var i=n.splitTrimFilterArgs(t[0]),s=i[i.length-1],a=s&&l.test(s)?"cb":"ret",f=n.splitTrimFilterArgs(t[1]),d=f[0];if(a==="cb"&&(!d||!c.test(d)))throw new Error(e(o,r));if(a==="ret"&&d&&c.test(d))throw new Error(e(u,r));return{type:a,inDef:h(i),outDef:p(f)}}};return y.selectFirst=b,y}),define("react/track-tasks",[],function(){function t(t){if(e)return;e=!0,t.events.on(t.events.TYPES.EXEC_FLOW_START,function(e){e.startTime=Date.now(),e.flowEmitter.emit(t.events.TYPES.FLOW_BEGIN,e)}),t.events.on(t.events.TYPES.EXEC_TASK_START,function(e){e.startTime=Date.now(),e.env.flowEmitter.emit(t.events.TYPES.TASK_BEGIN,e)}),t.events.on(t.events.TYPES.EXEC_TASK_COMPLETE,function(e){e.endTime=Date.now(),e.elapsedTime=e.endTime-e.startTime,e.env.flowEmitter.emit(t.events.TYPES.TASK_COMPLETE,e)}),t.events.on(t.events.TYPES.EXEC_TASK_ERRORED,function(e){e.endTime=Date.now(),e.elapsedTime=e.endTime-e.startTime,e.env.flowEmitter.emit(t.events.TYPES.TASK_ERRORED,e)}),t.events.on(t.events.TYPES.EXEC_FLOW_COMPLETE,function(e){e.endTime=Date.now(),e.elapsedTime=e.endTime-e.startTime,e.flowEmitter.emit(t.events.TYPES.FLOW_COMPLETE,e)}),t.events.on(t.events.TYPES.EXEC_FLOW_ERRORED,function(e){e.endTime=Date.now(),e.elapsedTime=e.endTime-e.startTime,e.flowEmitter.emit(t.events.TYPES.FLOW_ERRORED,e)})}var e=!1;return t}),define("react/log-events",["util"],function(e){function s(t){var n=new Date;n.setTime(t.time);var r=t.args.filter(function(e){return typeof e!="function"}),i=n.toISOString();if(this.event==="flow.complete"){var s=t;console.error("%s: %s msecs: %s \n args: %s \n results: %s\n",this.event,s.name,s.elapsedTime,e.inspect(r),e.inspect(s.results))}else{var o=t.name,u=t.args;console.error("%s: %s \n args: %s\n",this.event,o,e.inspect(r))}}function o(t){var n=new Date;n.setTime(t.time);var r=t.args.filter(function(e){return typeof e!="function"}),i=n.toISOString();if(this.event==="task.complete"){var s=t;console.error("%s: %s:%s msecs: %s \n args: %s \n results: %s\n",this.event,s.env.name,s.name,s.elapsedTime,e.inspect(r),e.inspect(s.results))}else{var o=t.name,u=t.args;console.error("%s: %s:%s \n args: %s\n",this.event,t.env.name,t.name,e.inspect(r))}}function u(e,t){if(!e)throw new Error("flowFn is required");if(t&&t!=="*"){var u=i.test(t)?s:o;e.events.removeListener(t,u),e.events.on(t,u)}else e.events.removeListener(n,s),e.events.on(n,s),e.events.removeListener(r,o),e.events.on(r,o)}var t={},n="flow.*",r="task.*",i=/^flow\./;return t.logEvents=u,t}),define("react/promise-resolve",[],function(){function n(n){if(t)return;t=!0,n.events.on(n.events.TYPES.EXEC_TASKS_PRECREATE,function(t){var n=t.vCon.values,r=t.ast.inParams.filter(function(e){var t=n[e];return t&&typeof t.then=="function"});r.forEach(function(r){var i=r+e;n[i]=n[r],n[r]=undefined,t.taskDefs.push({type:"when",a:[i],out:[r]})})})}var e="__promise",t=!1;return n}),define("react/event-collector",[],function(){function e(e){function i(){this.events=[]}e.trackTasks();var t=/^ast\./,n=/^task\./,r=/^flow\./;return i.prototype.capture=function(i,s){function a(e){var i={event:this.event,time:Date.now()};r.test(this.event)?i.env=e:n.test(this.event)?i.task=e:t.test(this.event)&&(i.ast=e),u.events.push(i)}!s&&typeof i=="string"?(s=i,i=e):i||(i=e),s||(s="*");var o=i.events,u=this;o.on(s,a)},i.prototype.list=function(){return this.events},i.prototype.clear=function(){this.events=[]},new i}return e}),define("react/react",["./core","./dsl","./track-tasks","./log-events","./promise-resolve","./event-collector"],function(e,t,n,r,i,s){function u(){i(o)}function a(){n(o)}function f(e,t){return!t&&typeof e=="string"&&(t=e,e=undefined),e||(e=o),a(),r.logEvents(e,t)}function l(){return s(o)}var o=t;return o.options=e.options,o.events=e.events,o.logEvents=f,o.resolvePromises=u,o.trackTasks=a,o.createEventCollector=l,o}),define("react",["react/react"],function(e){return e})
package/doc/advanced.md DELETED
@@ -1,166 +0,0 @@
1
- # Advanced React
2
-
3
- <a name="directAST"/>
4
- ## Example defining directly using AST
5
-
6
- Defining flow directly using the AST. Additional DSL interfaces can be built by simply having them build the proper AST.
7
-
8
-
9
- ```javascript
10
- var react = require('react');
11
-
12
- function load(res, cb) { setTimeout(cb, 100, null, res + '-loaded'); }
13
- function prefix(prefstr, str, cb) { setTimeout(cb, 100, null, prefstr + str); }
14
- function postfix(str, poststr, cb) { setTimeout(cb, 100, null, str + poststr); }
15
- function upper(str) { return str.toUpperCase(); }
16
-
17
- var fn = react();
18
- var errors = fn.setAndValidateAST({
19
- inParams: ['res', 'prefstr', 'poststr'],
20
- tasks: [
21
- { f: load, a: ['res'], out: ['lres'] },
22
- { f: upper, a: ['lres'], out: ['ulres'], type: 'ret' },
23
- { f: prefix, a: ['prefstr', 'ulres'], out: ['plres'] },
24
- { f: postfix, a: ['plres', 'poststr'], out: ['plresp'] }
25
- ],
26
- outTask: { a: ['plresp'] }
27
- });
28
- console.error('errors:', errors); // []
29
-
30
- fn('foo', 'pre-', '-post', function cb(err, lres) {
31
- console.error('err:', err); // null
32
- console.error('lres:', lres); // pre-FOO-LOADED-post
33
- });
34
- ```
35
-
36
-
37
- ## AST Definition
38
-
39
- The abstract syntax tree or AST provided by React represents the data necessary to define the flow. By abstracting this from the DSL, it allows new skins or interfaces to be developed without need to change the core engine.
40
-
41
- The AST is normally created at parse time when the React main function is called (or one of the alternate DSL's is called). This can be done a module load time such that after loading the React defined flow function's AST is generated and ready to process eliminating parsing and validation overhead when it is invoked in the future. This has the added advantage that since validation has also been performed that additional syntax issues or incomplete flow defintion errors can be caught quickly.
42
-
43
- After the flow function has been created, you can review the generated AST for a function by accessing the ast.
44
-
45
- ```javascript
46
- var react = require('react');
47
- var fn = react('my-flow-name', 'paramName1, paramName2, cb -> err, outParamName1, outParamName2',
48
- functionRefOrMethodStr, 'paramName1, cb -> err, outParamName2', // async cb task
49
- functionRefOrMethodStr2, 'paramName2, paramName1 -> outParamName1' // sync task
50
- );
51
-
52
- console.error(fn.ast); // output the generated AST
53
- ```
54
-
55
- The AST contains the following pieces:
56
-
57
- ```javascript
58
- var ast = {
59
- name: flowName,
60
- inParams: [],
61
- tasks: [],
62
- outTask: {},
63
- locals: {}
64
- };
65
- ```
66
- - **name** - string - represents the name of the flow or function that will be created. React will use the name when generating events so you can monitor progress and performance and also when errors occur.
67
- - **inParams** - array of strings - the flow input parameter names (excluding the callback param)
68
- - **tasks** - array of task defintion objects - each containing:
69
- - **f** - function reference or method string - async or sync function to be used for this task
70
- - **a** - array of input parameter names (excluding the callback param)
71
- - **out** - array of output parameter names (excluding the err parame)
72
- - **type** - type of function determining how function is invoked and its output style - one of: ('cb', 'ret', 'promise', 'when')
73
- - **name** - string - unique name for each task provided or generated by React
74
- - **outTask** - task definition object specifying the flow's output style and parameters containing:
75
- - **f** - will contain reference to the callback function at runtime
76
- - **a** - parameters being passed as output from the flow
77
- - **locals** - object provided which contains additional values that will become part of the React variable space like input parameters but can be defined in advance at flow definition. This can be used to provide functions and objects to React enabling string based DSL's.
78
-
79
-
80
- ## Plugins (optional requires which turn on additional functionality)
81
-
82
- Additional functionality which is not enabled by default but available by requiring additional modules.
83
-
84
-
85
- <a name="LogEvents"/>
86
- ### LogEvents - log react progress to stderr
87
-
88
- For convenience in debugging or in monitoring flow and performance, React has a built-in plugin for easily logging progress to stderr which is loaded and activated calling the react method `logEvents`. It can be specified to log globally for all react functions or only for particular react functions. You also may optionally listen to select events rather than all flow and task events.
89
-
90
- ```javascript
91
- var react = require('react');
92
- react.logEvents(); // turn on flow and task logging for all react functions
93
-
94
- // OR
95
-
96
- react.logEvents(myReactFn); // turn on flow and task logging for a specific function, repeat as needed
97
- react.logEvents(myReactFn).logEvents(myReactFn2); // can also chain
98
-
99
- // Both methods can also take an optional event wildcard to specify what you want to listen to
100
-
101
- react.logEvents('flow.*'); // turn on flow logging for all react functions
102
- react.logEvents(myReactFn, 'task.*'); // turn on task logging for myReactFn
103
- ```
104
-
105
- Available Events that can be logged:
106
-
107
- - flow.begin - flow execution has started (receives a flow env)
108
- - flow.complete - flow execution has successfully completed (receives a flow env)
109
- - flow.errored - flow execution has errored (receives a flow env)
110
- - task.begin - task has started (receives task)
111
- - task.complete - task has successfully complted (receives task)
112
- - task.errored - task has errored (receives task)
113
-
114
- ### Automatic Promise Resolution for inputs
115
-
116
- If you want to automatically resolve promises in React without having to manually call `when` or `then`, React provides a plugin which will detect the existence of a `then` method (indicating a promise) at runtime from any inputs to the flow and will internally create `when` tasks to resolve them before passing the values to other tasks. This built-in plugin is not loaded normally but is loaded by invoking the react method `resolvePromises`. External plugins like `react-deferred` also enable this but also provide additional promise integration. See https://github.com/jeffbski/react-deferred
117
-
118
- ```javascript
119
- var react = require('react');
120
- react.resolvePromises(); // turn on automatic promise detection and resolution
121
- ```
122
-
123
- ### Track tasks - enable task tracking
124
-
125
- Instead of only logging events to stderr (like LogEvents), this built-in plugin fires events that can be directly monitored. The LogEvent plugin uses this internally to get access to the metrics.
126
-
127
- Enable this like the other built-in plugins using the method `trackTasks`
128
-
129
- ```javascript
130
- var react = require('react');
131
- react.trackTasks(); // turn on flow and task tracking events
132
- ```
133
-
134
- Available Events that can be consumed
135
-
136
- - ast.defined - ast was defined (receives the ast)
137
- - flow.begin - flow execution has started (receives a flow env)
138
- - flow.complete - flow execution has successfully completed (receives a flow env)
139
- - flow.errored - flow execution has errored (receives a flow env)
140
- - task.begin - task has started (receives task)
141
- - task.complete - task has successfully complted (receives task)
142
- - task.errored - task has errored (receives task)
143
-
144
-
145
- ### EventCollector - simple event accumulator for debug use
146
-
147
- When developing or debugging it is often useful to accumulate events and then interrogate them to verify operation, especially in testing.
148
-
149
- To make this easier to accomplish, this plugin provides a simple event accumulator for development use. Note that this accumulator is designed for short term debug use, as it will continue to accumulate events and does not have any size restrictions, it should not be used in production since it will just continue to grow in size unless manually cleared.
150
-
151
- ```javascript
152
- var react = require('react');
153
- var collector = react.createEventCollector();
154
-
155
- collector.capture(); // capture all flow and task events for all react flows
156
- collector.capture('flow.*'); // capture all flow events for all react flows
157
- collector.capture(flowFn, 'task.*'); // capture task events on a flow
158
- collector.capture(flowFn, 'flow.*'); // add capture flow events on a flow
159
-
160
- var events = collector.list(); // retrieve the list of events
161
- collector.clear(); // clear the list of events;
162
- ```
163
-
164
- ### External Plugins
165
-
166
- - https://github.com/jeffbski/react-deferred - integrates jQuery style Deferred/Promises with react, providing automatic promise resolution and optional usage for react functions where by calling without a callback returns a promise.
@@ -1,938 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
- <plist version="1.0">
4
- <dict>
5
- <key>ActiveLayerIndex</key>
6
- <integer>0</integer>
7
- <key>ApplicationVersion</key>
8
- <array>
9
- <string>com.omnigroup.OmniGrafflePro</string>
10
- <string>138.33.0.157554</string>
11
- </array>
12
- <key>AutoAdjust</key>
13
- <true/>
14
- <key>BackgroundGraphic</key>
15
- <dict>
16
- <key>Bounds</key>
17
- <string>{{0, 0}, {576, 733}}</string>
18
- <key>Class</key>
19
- <string>SolidGraphic</string>
20
- <key>ID</key>
21
- <integer>2</integer>
22
- <key>Style</key>
23
- <dict>
24
- <key>shadow</key>
25
- <dict>
26
- <key>Draws</key>
27
- <string>NO</string>
28
- </dict>
29
- <key>stroke</key>
30
- <dict>
31
- <key>Draws</key>
32
- <string>NO</string>
33
- </dict>
34
- </dict>
35
- </dict>
36
- <key>CanvasOrigin</key>
37
- <string>{0, 0}</string>
38
- <key>ColumnAlign</key>
39
- <integer>1</integer>
40
- <key>ColumnSpacing</key>
41
- <real>36</real>
42
- <key>CreationDate</key>
43
- <string>2012-01-17 20:24:28 +0000</string>
44
- <key>Creator</key>
45
- <string>Barczewski, Jeffrey (ELS-STL)</string>
46
- <key>DisplayScale</key>
47
- <string>1 0/72 in = 1 0/72 in</string>
48
- <key>GraphDocumentVersion</key>
49
- <integer>8</integer>
50
- <key>GraphicsList</key>
51
- <array>
52
- <dict>
53
- <key>Class</key>
54
- <string>LineGraphic</string>
55
- <key>ID</key>
56
- <integer>26</integer>
57
- <key>Points</key>
58
- <array>
59
- <string>{365.5, 129.8421}</string>
60
- <string>{275.5, 139}</string>
61
- </array>
62
- <key>Style</key>
63
- <dict>
64
- <key>stroke</key>
65
- <dict>
66
- <key>HeadArrow</key>
67
- <string>FilledArrow</string>
68
- <key>LineType</key>
69
- <integer>1</integer>
70
- <key>TailArrow</key>
71
- <string>0</string>
72
- </dict>
73
- </dict>
74
- <key>Tail</key>
75
- <dict>
76
- <key>ID</key>
77
- <integer>22</integer>
78
- </dict>
79
- </dict>
80
- <dict>
81
- <key>Class</key>
82
- <string>LineGraphic</string>
83
- <key>ID</key>
84
- <integer>25</integer>
85
- <key>Points</key>
86
- <array>
87
- <string>{365.5, 124.95454}</string>
88
- <string>{302.5, 125.5}</string>
89
- </array>
90
- <key>Style</key>
91
- <dict>
92
- <key>stroke</key>
93
- <dict>
94
- <key>HeadArrow</key>
95
- <string>FilledArrow</string>
96
- <key>LineType</key>
97
- <integer>1</integer>
98
- <key>TailArrow</key>
99
- <string>0</string>
100
- </dict>
101
- </dict>
102
- <key>Tail</key>
103
- <dict>
104
- <key>ID</key>
105
- <integer>22</integer>
106
- </dict>
107
- </dict>
108
- <dict>
109
- <key>Class</key>
110
- <string>LineGraphic</string>
111
- <key>ID</key>
112
- <integer>24</integer>
113
- <key>Points</key>
114
- <array>
115
- <string>{365.5, 119.32394}</string>
116
- <string>{276, 110.5}</string>
117
- </array>
118
- <key>Style</key>
119
- <dict>
120
- <key>stroke</key>
121
- <dict>
122
- <key>HeadArrow</key>
123
- <string>FilledArrow</string>
124
- <key>LineType</key>
125
- <integer>1</integer>
126
- <key>TailArrow</key>
127
- <string>0</string>
128
- </dict>
129
- </dict>
130
- <key>Tail</key>
131
- <dict>
132
- <key>ID</key>
133
- <integer>22</integer>
134
- </dict>
135
- </dict>
136
- <dict>
137
- <key>Bounds</key>
138
- <string>{{365.5, 117.5}, {105, 14}}</string>
139
- <key>Class</key>
140
- <string>ShapedGraphic</string>
141
- <key>FitText</key>
142
- <string>YES</string>
143
- <key>Flow</key>
144
- <string>Resize</string>
145
- <key>ID</key>
146
- <integer>22</integer>
147
- <key>Shape</key>
148
- <string>Rectangle</string>
149
- <key>Style</key>
150
- <dict>
151
- <key>fill</key>
152
- <dict>
153
- <key>Draws</key>
154
- <string>NO</string>
155
- </dict>
156
- <key>shadow</key>
157
- <dict>
158
- <key>Draws</key>
159
- <string>NO</string>
160
- </dict>
161
- <key>stroke</key>
162
- <dict>
163
- <key>Draws</key>
164
- <string>NO</string>
165
- </dict>
166
- </dict>
167
- <key>Text</key>
168
- <dict>
169
- <key>Pad</key>
170
- <integer>0</integer>
171
- <key>Text</key>
172
- <string>{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf230
173
- {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
174
- {\colortbl;\red255\green255\blue255;}
175
- \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
176
-
177
- \f0\fs24 \cf0 task in / out params}</string>
178
- <key>VerticalPad</key>
179
- <integer>0</integer>
180
- </dict>
181
- <key>Wrap</key>
182
- <string>NO</string>
183
- </dict>
184
- <dict>
185
- <key>Class</key>
186
- <string>LineGraphic</string>
187
- <key>Head</key>
188
- <dict>
189
- <key>ID</key>
190
- <integer>4</integer>
191
- </dict>
192
- <key>ID</key>
193
- <integer>21</integer>
194
- <key>Points</key>
195
- <array>
196
- <string>{57, 142}</string>
197
- <string>{78.5, 141.00331}</string>
198
- </array>
199
- <key>Style</key>
200
- <dict>
201
- <key>stroke</key>
202
- <dict>
203
- <key>HeadArrow</key>
204
- <string>FilledArrow</string>
205
- <key>LineType</key>
206
- <integer>1</integer>
207
- <key>TailArrow</key>
208
- <string>0</string>
209
- </dict>
210
- </dict>
211
- </dict>
212
- <dict>
213
- <key>Class</key>
214
- <string>LineGraphic</string>
215
- <key>ID</key>
216
- <integer>20</integer>
217
- <key>Points</key>
218
- <array>
219
- <string>{55.5, 126.26373}</string>
220
- <string>{78.5, 125}</string>
221
- </array>
222
- <key>Style</key>
223
- <dict>
224
- <key>stroke</key>
225
- <dict>
226
- <key>HeadArrow</key>
227
- <string>FilledArrow</string>
228
- <key>LineType</key>
229
- <integer>1</integer>
230
- <key>TailArrow</key>
231
- <string>0</string>
232
- </dict>
233
- </dict>
234
- <key>Tail</key>
235
- <dict>
236
- <key>ID</key>
237
- <integer>17</integer>
238
- </dict>
239
- </dict>
240
- <dict>
241
- <key>Class</key>
242
- <string>LineGraphic</string>
243
- <key>ID</key>
244
- <integer>19</integer>
245
- <key>Points</key>
246
- <array>
247
- <string>{55.5, 112.25275}</string>
248
- <string>{78.5, 112}</string>
249
- </array>
250
- <key>Style</key>
251
- <dict>
252
- <key>stroke</key>
253
- <dict>
254
- <key>HeadArrow</key>
255
- <string>FilledArrow</string>
256
- <key>LineType</key>
257
- <integer>1</integer>
258
- <key>TailArrow</key>
259
- <string>0</string>
260
- </dict>
261
- </dict>
262
- <key>Tail</key>
263
- <dict>
264
- <key>ID</key>
265
- <integer>16</integer>
266
- </dict>
267
- </dict>
268
- <dict>
269
- <key>Bounds</key>
270
- <string>{{16.5, 134.5}, {39, 14}}</string>
271
- <key>Class</key>
272
- <string>ShapedGraphic</string>
273
- <key>FitText</key>
274
- <string>YES</string>
275
- <key>Flow</key>
276
- <string>Resize</string>
277
- <key>ID</key>
278
- <integer>18</integer>
279
- <key>Shape</key>
280
- <string>Rectangle</string>
281
- <key>Style</key>
282
- <dict>
283
- <key>fill</key>
284
- <dict>
285
- <key>Draws</key>
286
- <string>NO</string>
287
- </dict>
288
- <key>shadow</key>
289
- <dict>
290
- <key>Draws</key>
291
- <string>NO</string>
292
- </dict>
293
- <key>stroke</key>
294
- <dict>
295
- <key>Draws</key>
296
- <string>NO</string>
297
- </dict>
298
- </dict>
299
- <key>Text</key>
300
- <dict>
301
- <key>Pad</key>
302
- <integer>0</integer>
303
- <key>Text</key>
304
- <string>{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf230
305
- {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
306
- {\colortbl;\red255\green255\blue255;}
307
- \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
308
-
309
- \f0\fs24 \cf0 sync fn}</string>
310
- <key>VerticalPad</key>
311
- <integer>0</integer>
312
- </dict>
313
- <key>Wrap</key>
314
- <string>NO</string>
315
- </dict>
316
- <dict>
317
- <key>Bounds</key>
318
- <string>{{10.5, 120.5}, {45, 14}}</string>
319
- <key>Class</key>
320
- <string>ShapedGraphic</string>
321
- <key>FitText</key>
322
- <string>YES</string>
323
- <key>Flow</key>
324
- <string>Resize</string>
325
- <key>ID</key>
326
- <integer>17</integer>
327
- <key>Shape</key>
328
- <string>Rectangle</string>
329
- <key>Style</key>
330
- <dict>
331
- <key>fill</key>
332
- <dict>
333
- <key>Draws</key>
334
- <string>NO</string>
335
- </dict>
336
- <key>shadow</key>
337
- <dict>
338
- <key>Draws</key>
339
- <string>NO</string>
340
- </dict>
341
- <key>stroke</key>
342
- <dict>
343
- <key>Draws</key>
344
- <string>NO</string>
345
- </dict>
346
- </dict>
347
- <key>Text</key>
348
- <dict>
349
- <key>Pad</key>
350
- <integer>0</integer>
351
- <key>Text</key>
352
- <string>{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf230
353
- {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
354
- {\colortbl;\red255\green255\blue255;}
355
- \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
356
-
357
- \f0\fs24 \cf0 async fn}</string>
358
- <key>VerticalPad</key>
359
- <integer>0</integer>
360
- </dict>
361
- <key>Wrap</key>
362
- <string>NO</string>
363
- </dict>
364
- <dict>
365
- <key>Bounds</key>
366
- <string>{{10.5, 105.5}, {45, 14}}</string>
367
- <key>Class</key>
368
- <string>ShapedGraphic</string>
369
- <key>FitText</key>
370
- <string>YES</string>
371
- <key>Flow</key>
372
- <string>Resize</string>
373
- <key>ID</key>
374
- <integer>16</integer>
375
- <key>Shape</key>
376
- <string>Rectangle</string>
377
- <key>Style</key>
378
- <dict>
379
- <key>fill</key>
380
- <dict>
381
- <key>Draws</key>
382
- <string>NO</string>
383
- </dict>
384
- <key>shadow</key>
385
- <dict>
386
- <key>Draws</key>
387
- <string>NO</string>
388
- </dict>
389
- <key>stroke</key>
390
- <dict>
391
- <key>Draws</key>
392
- <string>NO</string>
393
- </dict>
394
- </dict>
395
- <key>Text</key>
396
- <dict>
397
- <key>Pad</key>
398
- <integer>0</integer>
399
- <key>Text</key>
400
- <string>{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf230
401
- {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
402
- {\colortbl;\red255\green255\blue255;}
403
- \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
404
-
405
- \f0\fs24 \cf0 async fn}</string>
406
- <key>VerticalPad</key>
407
- <integer>0</integer>
408
- </dict>
409
- <key>Wrap</key>
410
- <string>NO</string>
411
- </dict>
412
- <dict>
413
- <key>Class</key>
414
- <string>LineGraphic</string>
415
- <key>ID</key>
416
- <integer>15</integer>
417
- <key>Points</key>
418
- <array>
419
- <string>{430.80768, 57.5}</string>
420
- <string>{434.5, 89.5}</string>
421
- </array>
422
- <key>Style</key>
423
- <dict>
424
- <key>stroke</key>
425
- <dict>
426
- <key>HeadArrow</key>
427
- <string>FilledArrow</string>
428
- <key>LineType</key>
429
- <integer>1</integer>
430
- <key>TailArrow</key>
431
- <string>0</string>
432
- </dict>
433
- </dict>
434
- <key>Tail</key>
435
- <dict>
436
- <key>ID</key>
437
- <integer>7</integer>
438
- </dict>
439
- </dict>
440
- <dict>
441
- <key>Class</key>
442
- <string>LineGraphic</string>
443
- <key>ID</key>
444
- <integer>14</integer>
445
- <key>Points</key>
446
- <array>
447
- <string>{106.08696, 57.5}</string>
448
- <string>{104, 89.5}</string>
449
- </array>
450
- <key>Style</key>
451
- <dict>
452
- <key>stroke</key>
453
- <dict>
454
- <key>HeadArrow</key>
455
- <string>FilledArrow</string>
456
- <key>LineType</key>
457
- <integer>1</integer>
458
- <key>TailArrow</key>
459
- <string>0</string>
460
- </dict>
461
- </dict>
462
- <key>Tail</key>
463
- <dict>
464
- <key>ID</key>
465
- <integer>8</integer>
466
- </dict>
467
- </dict>
468
- <dict>
469
- <key>Class</key>
470
- <string>LineGraphic</string>
471
- <key>Head</key>
472
- <dict>
473
- <key>ID</key>
474
- <integer>4</integer>
475
- </dict>
476
- <key>ID</key>
477
- <integer>12</integer>
478
- <key>Points</key>
479
- <array>
480
- <string>{292.6358, 57.5}</string>
481
- <string>{288.68518, 89.5}</string>
482
- </array>
483
- <key>Style</key>
484
- <dict>
485
- <key>stroke</key>
486
- <dict>
487
- <key>HeadArrow</key>
488
- <string>FilledArrow</string>
489
- <key>LineType</key>
490
- <integer>1</integer>
491
- <key>TailArrow</key>
492
- <string>0</string>
493
- </dict>
494
- </dict>
495
- <key>Tail</key>
496
- <dict>
497
- <key>ID</key>
498
- <integer>6</integer>
499
- </dict>
500
- </dict>
501
- <dict>
502
- <key>Class</key>
503
- <string>LineGraphic</string>
504
- <key>ID</key>
505
- <integer>11</integer>
506
- <key>Points</key>
507
- <array>
508
- <string>{188.10257, 57.5}</string>
509
- <string>{184, 89.5}</string>
510
- </array>
511
- <key>Style</key>
512
- <dict>
513
- <key>stroke</key>
514
- <dict>
515
- <key>HeadArrow</key>
516
- <string>FilledArrow</string>
517
- <key>LineType</key>
518
- <integer>1</integer>
519
- <key>TailArrow</key>
520
- <string>0</string>
521
- </dict>
522
- </dict>
523
- <key>Tail</key>
524
- <dict>
525
- <key>ID</key>
526
- <integer>5</integer>
527
- </dict>
528
- </dict>
529
- <dict>
530
- <key>Bounds</key>
531
- <string>{{71.5, 29.5}, {71, 28}}</string>
532
- <key>Class</key>
533
- <string>ShapedGraphic</string>
534
- <key>FitText</key>
535
- <string>YES</string>
536
- <key>Flow</key>
537
- <string>Resize</string>
538
- <key>ID</key>
539
- <integer>8</integer>
540
- <key>Shape</key>
541
- <string>Rectangle</string>
542
- <key>Style</key>
543
- <dict>
544
- <key>fill</key>
545
- <dict>
546
- <key>Draws</key>
547
- <string>NO</string>
548
- </dict>
549
- <key>shadow</key>
550
- <dict>
551
- <key>Draws</key>
552
- <string>NO</string>
553
- </dict>
554
- <key>stroke</key>
555
- <dict>
556
- <key>Draws</key>
557
- <string>NO</string>
558
- </dict>
559
- </dict>
560
- <key>Text</key>
561
- <dict>
562
- <key>Pad</key>
563
- <integer>0</integer>
564
- <key>Text</key>
565
- <string>{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf230
566
- {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
567
- {\colortbl;\red255\green255\blue255;}
568
- \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
569
-
570
- \f0\fs24 \cf0 react created\
571
- function}</string>
572
- <key>VerticalPad</key>
573
- <integer>0</integer>
574
- </dict>
575
- <key>Wrap</key>
576
- <string>NO</string>
577
- </dict>
578
- <dict>
579
- <key>Bounds</key>
580
- <string>{{387.5, 43.5}, {85, 14}}</string>
581
- <key>Class</key>
582
- <string>ShapedGraphic</string>
583
- <key>FitText</key>
584
- <string>YES</string>
585
- <key>Flow</key>
586
- <string>Resize</string>
587
- <key>ID</key>
588
- <integer>7</integer>
589
- <key>Shape</key>
590
- <string>Rectangle</string>
591
- <key>Style</key>
592
- <dict>
593
- <key>fill</key>
594
- <dict>
595
- <key>Draws</key>
596
- <string>NO</string>
597
- </dict>
598
- <key>shadow</key>
599
- <dict>
600
- <key>Draws</key>
601
- <string>NO</string>
602
- </dict>
603
- <key>stroke</key>
604
- <dict>
605
- <key>Draws</key>
606
- <string>NO</string>
607
- </dict>
608
- </dict>
609
- <key>Text</key>
610
- <dict>
611
- <key>Pad</key>
612
- <integer>0</integer>
613
- <key>Text</key>
614
- <string>{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf230
615
- {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
616
- {\colortbl;\red255\green255\blue255;}
617
- \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
618
-
619
- \f0\fs24 \cf0 flow out params}</string>
620
- <key>VerticalPad</key>
621
- <integer>0</integer>
622
- </dict>
623
- <key>Wrap</key>
624
- <string>NO</string>
625
- </dict>
626
- <dict>
627
- <key>Bounds</key>
628
- <string>{{254.5, 43.5}, {78, 14}}</string>
629
- <key>Class</key>
630
- <string>ShapedGraphic</string>
631
- <key>FitText</key>
632
- <string>YES</string>
633
- <key>Flow</key>
634
- <string>Resize</string>
635
- <key>ID</key>
636
- <integer>6</integer>
637
- <key>Shape</key>
638
- <string>Rectangle</string>
639
- <key>Style</key>
640
- <dict>
641
- <key>fill</key>
642
- <dict>
643
- <key>Draws</key>
644
- <string>NO</string>
645
- </dict>
646
- <key>shadow</key>
647
- <dict>
648
- <key>Draws</key>
649
- <string>NO</string>
650
- </dict>
651
- <key>stroke</key>
652
- <dict>
653
- <key>Draws</key>
654
- <string>NO</string>
655
- </dict>
656
- </dict>
657
- <key>Text</key>
658
- <dict>
659
- <key>Pad</key>
660
- <integer>0</integer>
661
- <key>Text</key>
662
- <string>{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf230
663
- {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
664
- {\colortbl;\red255\green255\blue255;}
665
- \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
666
-
667
- \f0\fs24 \cf0 flow in params}</string>
668
- <key>VerticalPad</key>
669
- <integer>0</integer>
670
- </dict>
671
- <key>Wrap</key>
672
- <string>NO</string>
673
- </dict>
674
- <dict>
675
- <key>Bounds</key>
676
- <string>{{161, 43.5}, {56, 14}}</string>
677
- <key>Class</key>
678
- <string>ShapedGraphic</string>
679
- <key>FitText</key>
680
- <string>YES</string>
681
- <key>Flow</key>
682
- <string>Resize</string>
683
- <key>ID</key>
684
- <integer>5</integer>
685
- <key>Shape</key>
686
- <string>Rectangle</string>
687
- <key>Style</key>
688
- <dict>
689
- <key>fill</key>
690
- <dict>
691
- <key>Draws</key>
692
- <string>NO</string>
693
- </dict>
694
- <key>shadow</key>
695
- <dict>
696
- <key>Draws</key>
697
- <string>NO</string>
698
- </dict>
699
- <key>stroke</key>
700
- <dict>
701
- <key>Draws</key>
702
- <string>NO</string>
703
- </dict>
704
- </dict>
705
- <key>Text</key>
706
- <dict>
707
- <key>Pad</key>
708
- <integer>0</integer>
709
- <key>Text</key>
710
- <string>{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf230
711
- {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
712
- {\colortbl;\red255\green255\blue255;}
713
- \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
714
-
715
- \f0\fs24 \cf0 flow-name}</string>
716
- <key>VerticalPad</key>
717
- <integer>0</integer>
718
- </dict>
719
- <key>Wrap</key>
720
- <string>NO</string>
721
- </dict>
722
- <dict>
723
- <key>Bounds</key>
724
- <string>{{78.5, 89.5}, {410, 84}}</string>
725
- <key>Class</key>
726
- <string>ShapedGraphic</string>
727
- <key>FitText</key>
728
- <string>YES</string>
729
- <key>Flow</key>
730
- <string>Resize</string>
731
- <key>ID</key>
732
- <integer>4</integer>
733
- <key>Shape</key>
734
- <string>Rectangle</string>
735
- <key>Style</key>
736
- <dict>
737
- <key>fill</key>
738
- <dict>
739
- <key>Draws</key>
740
- <string>NO</string>
741
- </dict>
742
- <key>shadow</key>
743
- <dict>
744
- <key>Draws</key>
745
- <string>NO</string>
746
- </dict>
747
- <key>stroke</key>
748
- <dict>
749
- <key>Draws</key>
750
- <string>NO</string>
751
- </dict>
752
- </dict>
753
- <key>Text</key>
754
- <dict>
755
- <key>Align</key>
756
- <integer>0</integer>
757
- <key>Pad</key>
758
- <integer>0</integer>
759
- <key>Text</key>
760
- <string>{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf230
761
- {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
762
- {\colortbl;\red255\green255\blue255;\red11\green130\blue127;\red29\green168\blue7;\red55\green79\blue168;
763
- \red130\green18\blue115;\red130\green8\blue36;\red57\green89\blue130;\red112\green130\blue22;\red130\green4\blue35;
764
- \red56\green86\blue130;\red115\green130\blue25;\red130\green7\blue38;\red117\green130\blue26;\red130\green13\blue116;
765
- }
766
- \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
767
-
768
- \f0\fs24 \cf0 var \cf2 fn\cf0 = react('\cf3 loadRender\cf0 ', '\cf4 fooPath, barPath, barP2, cb\cf0 -&gt; \cf5 err, renderedOut\cf0 ',\
769
- \cf6 loadFoo\cf0 , '\cf7 fooPath\cf0 , cb -&gt; err, \cf8 foo\cf0 ',\
770
- \cf9 loadBar\cf0 , '\cf10 barPath, barP2\cf0 , cb -&gt; err, \cf11 bar\cf0 ',\
771
- \cf12 render\cf0 , '\cf13 foo, bar\cf0 -&gt; \cf14 renderedOut\cf0 '\
772
- );\
773
- }</string>
774
- <key>VerticalPad</key>
775
- <integer>0</integer>
776
- </dict>
777
- <key>Wrap</key>
778
- <string>NO</string>
779
- </dict>
780
- </array>
781
- <key>GridInfo</key>
782
- <dict/>
783
- <key>GuidesLocked</key>
784
- <string>NO</string>
785
- <key>GuidesVisible</key>
786
- <string>YES</string>
787
- <key>HPages</key>
788
- <integer>1</integer>
789
- <key>ImageCounter</key>
790
- <integer>1</integer>
791
- <key>KeepToScale</key>
792
- <false/>
793
- <key>Layers</key>
794
- <array>
795
- <dict>
796
- <key>Lock</key>
797
- <string>NO</string>
798
- <key>Name</key>
799
- <string>Layer 1</string>
800
- <key>Print</key>
801
- <string>YES</string>
802
- <key>View</key>
803
- <string>YES</string>
804
- </dict>
805
- </array>
806
- <key>LayoutInfo</key>
807
- <dict>
808
- <key>Animate</key>
809
- <string>NO</string>
810
- <key>circoMinDist</key>
811
- <real>18</real>
812
- <key>circoSeparation</key>
813
- <real>0.0</real>
814
- <key>layoutEngine</key>
815
- <string>dot</string>
816
- <key>neatoSeparation</key>
817
- <real>0.0</real>
818
- <key>twopiSeparation</key>
819
- <real>0.0</real>
820
- </dict>
821
- <key>LinksVisible</key>
822
- <string>NO</string>
823
- <key>MagnetsVisible</key>
824
- <string>NO</string>
825
- <key>MasterSheets</key>
826
- <array/>
827
- <key>ModificationDate</key>
828
- <string>2012-01-17 20:43:33 +0000</string>
829
- <key>Modifier</key>
830
- <string>Barczewski, Jeffrey (ELS-STL)</string>
831
- <key>NotesVisible</key>
832
- <string>NO</string>
833
- <key>Orientation</key>
834
- <integer>2</integer>
835
- <key>OriginVisible</key>
836
- <string>NO</string>
837
- <key>PageBreaks</key>
838
- <string>YES</string>
839
- <key>PrintInfo</key>
840
- <dict>
841
- <key>NSBottomMargin</key>
842
- <array>
843
- <string>float</string>
844
- <string>41</string>
845
- </array>
846
- <key>NSHorizonalPagination</key>
847
- <array>
848
- <string>int</string>
849
- <string>0</string>
850
- </array>
851
- <key>NSLeftMargin</key>
852
- <array>
853
- <string>float</string>
854
- <string>18</string>
855
- </array>
856
- <key>NSPaperSize</key>
857
- <array>
858
- <string>coded</string>
859
- <string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAx7X05TU2l6ZT1mZn2WgWQCgRgDhg==</string>
860
- </array>
861
- <key>NSPrintReverseOrientation</key>
862
- <array>
863
- <string>int</string>
864
- <string>0</string>
865
- </array>
866
- <key>NSRightMargin</key>
867
- <array>
868
- <string>float</string>
869
- <string>18</string>
870
- </array>
871
- <key>NSTopMargin</key>
872
- <array>
873
- <string>float</string>
874
- <string>18</string>
875
- </array>
876
- </dict>
877
- <key>PrintOnePage</key>
878
- <false/>
879
- <key>ReadOnly</key>
880
- <string>NO</string>
881
- <key>RowAlign</key>
882
- <integer>1</integer>
883
- <key>RowSpacing</key>
884
- <real>36</real>
885
- <key>SheetTitle</key>
886
- <string>Canvas 1</string>
887
- <key>SmartAlignmentGuidesActive</key>
888
- <string>YES</string>
889
- <key>SmartDistanceGuidesActive</key>
890
- <string>YES</string>
891
- <key>UniqueID</key>
892
- <integer>1</integer>
893
- <key>UseEntirePage</key>
894
- <false/>
895
- <key>VPages</key>
896
- <integer>1</integer>
897
- <key>WindowInfo</key>
898
- <dict>
899
- <key>CurrentSheet</key>
900
- <integer>0</integer>
901
- <key>ExpandedCanvases</key>
902
- <array>
903
- <dict>
904
- <key>name</key>
905
- <string>Canvas 1</string>
906
- </dict>
907
- </array>
908
- <key>Frame</key>
909
- <string>{{218, 119}, {1216, 858}}</string>
910
- <key>ListView</key>
911
- <true/>
912
- <key>OutlineWidth</key>
913
- <integer>142</integer>
914
- <key>RightSidebar</key>
915
- <false/>
916
- <key>ShowRuler</key>
917
- <true/>
918
- <key>Sidebar</key>
919
- <true/>
920
- <key>SidebarWidth</key>
921
- <integer>120</integer>
922
- <key>VisibleRegion</key>
923
- <string>{{0, 0}, {533.5, 344}}</string>
924
- <key>Zoom</key>
925
- <real>2</real>
926
- <key>ZoomValues</key>
927
- <array>
928
- <array>
929
- <string>Canvas 1</string>
930
- <real>2</real>
931
- <real>1</real>
932
- </array>
933
- </array>
934
- </dict>
935
- <key>saveQuickLookFiles</key>
936
- <string>YES</string>
937
- </dict>
938
- </plist>