UNPKG

mini-program-cljs

Version:

1 lines 91.2 kB
["^ ","~:output",["^ ","~:js","goog.provide('instaparse.auto_flatten_seq');\ninstaparse.auto_flatten_seq.threshold = (32);\n\n/**\n * @interface\n */\ninstaparse.auto_flatten_seq.ConjFlat = function(){};\n\ninstaparse.auto_flatten_seq.conj_flat = (function instaparse$auto_flatten_seq$conj_flat(self,obj){\nif((((!((self == null)))) && ((!((self.instaparse$auto_flatten_seq$ConjFlat$conj_flat$arity$2 == null)))))){\nreturn self.instaparse$auto_flatten_seq$ConjFlat$conj_flat$arity$2(self,obj);\n} else {\nvar x__4487__auto__ = (((self == null))?null:self);\nvar m__4488__auto__ = (instaparse.auto_flatten_seq.conj_flat[goog.typeOf(x__4487__auto__)]);\nif((!((m__4488__auto__ == null)))){\nreturn (m__4488__auto__.cljs$core$IFn$_invoke$arity$2 ? m__4488__auto__.cljs$core$IFn$_invoke$arity$2(self,obj) : m__4488__auto__.call(null,self,obj));\n} else {\nvar m__4485__auto__ = (instaparse.auto_flatten_seq.conj_flat[\"_\"]);\nif((!((m__4485__auto__ == null)))){\nreturn (m__4485__auto__.cljs$core$IFn$_invoke$arity$2 ? m__4485__auto__.cljs$core$IFn$_invoke$arity$2(self,obj) : m__4485__auto__.call(null,self,obj));\n} else {\nthrow cljs.core.missing_protocol(\"ConjFlat.conj-flat\",self);\n}\n}\n}\n});\n\ninstaparse.auto_flatten_seq.cached_QMARK_ = (function instaparse$auto_flatten_seq$cached_QMARK_(self){\nif((((!((self == null)))) && ((!((self.instaparse$auto_flatten_seq$ConjFlat$cached_QMARK_$arity$1 == null)))))){\nreturn self.instaparse$auto_flatten_seq$ConjFlat$cached_QMARK_$arity$1(self);\n} else {\nvar x__4487__auto__ = (((self == null))?null:self);\nvar m__4488__auto__ = (instaparse.auto_flatten_seq.cached_QMARK_[goog.typeOf(x__4487__auto__)]);\nif((!((m__4488__auto__ == null)))){\nreturn (m__4488__auto__.cljs$core$IFn$_invoke$arity$1 ? m__4488__auto__.cljs$core$IFn$_invoke$arity$1(self) : m__4488__auto__.call(null,self));\n} else {\nvar m__4485__auto__ = (instaparse.auto_flatten_seq.cached_QMARK_[\"_\"]);\nif((!((m__4485__auto__ == null)))){\nreturn (m__4485__auto__.cljs$core$IFn$_invoke$arity$1 ? m__4485__auto__.cljs$core$IFn$_invoke$arity$1(self) : m__4485__auto__.call(null,self));\n} else {\nthrow cljs.core.missing_protocol(\"ConjFlat.cached?\",self);\n}\n}\n}\n});\n\n\n\n\n/**\n * Returns the hash code, consistent with =, for an external ordered\n * collection implementing Iterable.\n * See http://clojure.org/data_structures#hash for full algorithms.\n */\ninstaparse.auto_flatten_seq.hash_conj = (function instaparse$auto_flatten_seq$hash_conj(unmixed_hash,item){\nreturn (cljs.core.imul((31),unmixed_hash) + cljs.core.hash(item));\n});\ninstaparse.auto_flatten_seq.expt = (function instaparse$auto_flatten_seq$expt(base,pow){\nif((pow === (0))){\nreturn (1);\n} else {\nvar n = (pow | (0));\nvar y = ((1) | (0));\nvar z = (base | (0));\nwhile(true){\nvar t = cljs.core.even_QMARK_(n);\nvar n__$1 = cljs.core.quot(n,(2));\nif(t){\nvar G__25811 = n__$1;\nvar G__25812 = y;\nvar G__25813 = cljs.core.imul(z,z);\nn = G__25811;\ny = G__25812;\nz = G__25813;\ncontinue;\n} else {\nif((n__$1 === (0))){\nreturn cljs.core.imul(z,y);\n} else {\nvar G__25814 = n__$1;\nvar G__25815 = cljs.core.imul(z,y);\nvar G__25816 = cljs.core.imul(z,z);\nn = G__25814;\ny = G__25815;\nz = G__25816;\ncontinue;\n\n}\n}\nbreak;\n}\n}\n});\ninstaparse.auto_flatten_seq.delve = (function instaparse$auto_flatten_seq$delve(v,index){\nvar v__$1 = cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(v,index);\nvar index__$1 = index;\nwhile(true){\nif(cljs.core.truth_((instaparse.auto_flatten_seq.afs_QMARK_.cljs$core$IFn$_invoke$arity$1 ? instaparse.auto_flatten_seq.afs_QMARK_.cljs$core$IFn$_invoke$arity$1(v__$1) : instaparse.auto_flatten_seq.afs_QMARK_.call(null,v__$1)))){\nvar G__25817 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(v__$1,(0));\nvar G__25818 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(index__$1,(0));\nv__$1 = G__25817;\nindex__$1 = G__25818;\ncontinue;\n} else {\nreturn index__$1;\n}\nbreak;\n}\n});\ninstaparse.auto_flatten_seq.advance = (function instaparse$auto_flatten_seq$advance(v,index){\nwhile(true){\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.count(index),(1))){\nif((cljs.core.peek(index) < ((instaparse.auto_flatten_seq.true_count.cljs$core$IFn$_invoke$arity$1 ? instaparse.auto_flatten_seq.true_count.cljs$core$IFn$_invoke$arity$1(v) : instaparse.auto_flatten_seq.true_count.call(null,v)) - (1)))){\nreturn instaparse.auto_flatten_seq.delve(v,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [(cljs.core.peek(index) + (1))], null));\n} else {\nreturn null;\n}\n} else {\nif((cljs.core.peek(index) < ((function (){var G__25772 = cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(v,cljs.core.pop(index));\nreturn (instaparse.auto_flatten_seq.true_count.cljs$core$IFn$_invoke$arity$1 ? instaparse.auto_flatten_seq.true_count.cljs$core$IFn$_invoke$arity$1(G__25772) : instaparse.auto_flatten_seq.true_count.call(null,G__25772));\n})() - (1)))){\nreturn instaparse.auto_flatten_seq.delve(v,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.pop(index),(cljs.core.peek(index) + (1))));\n} else {\nvar G__25819 = v;\nvar G__25820 = cljs.core.pop(index);\nv = G__25819;\nindex = G__25820;\ncontinue;\n\n}\n}\nbreak;\n}\n});\ninstaparse.auto_flatten_seq.flat_seq = (function instaparse$auto_flatten_seq$flat_seq(var_args){\nvar G__25774 = arguments.length;\nswitch (G__25774) {\ncase 1:\nreturn instaparse.auto_flatten_seq.flat_seq.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));\n\nbreak;\ncase 2:\nreturn instaparse.auto_flatten_seq.flat_seq.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));\n\nbreak;\ndefault:\nthrow (new Error([\"Invalid arity: \",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));\n\n}\n});\n\n(instaparse.auto_flatten_seq.flat_seq.cljs$core$IFn$_invoke$arity$1 = (function (v){\nif((cljs.core.count(v) > (0))){\nreturn instaparse.auto_flatten_seq.flat_seq.cljs$core$IFn$_invoke$arity$2(v,instaparse.auto_flatten_seq.delve(v,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [(0)], null)));\n} else {\nreturn null;\n}\n}));\n\n(instaparse.auto_flatten_seq.flat_seq.cljs$core$IFn$_invoke$arity$2 = (function (v,index){\nreturn (new cljs.core.LazySeq(null,(function (){\nreturn cljs.core.cons(cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(v,index),(function (){var temp__5735__auto__ = instaparse.auto_flatten_seq.advance(v,index);\nif(cljs.core.truth_(temp__5735__auto__)){\nvar next_index = temp__5735__auto__;\nreturn instaparse.auto_flatten_seq.flat_seq.cljs$core$IFn$_invoke$arity$2(v,next_index);\n} else {\nreturn null;\n}\n})());\n}),null,null));\n}));\n\n(instaparse.auto_flatten_seq.flat_seq.cljs$lang$maxFixedArity = 2);\n\n\n/**\n* @constructor\n * @implements {cljs.core.IEquiv}\n * @implements {cljs.core.IHash}\n * @implements {cljs.core.ICollection}\n * @implements {cljs.core.IEmptyableCollection}\n * @implements {cljs.core.ICounted}\n * @implements {cljs.core.ISeq}\n * @implements {cljs.core.INext}\n * @implements {instaparse.auto_flatten_seq.ConjFlat}\n * @implements {cljs.core.ISeqable}\n * @implements {cljs.core.IMeta}\n * @implements {cljs.core.ISequential}\n * @implements {cljs.core.IWithMeta}\n * @implements {cljs.core.ILookup}\n*/\ninstaparse.auto_flatten_seq.AutoFlattenSeq = (function (v,premix_hashcode,hashcode,cnt,dirty,cached_seq){\nthis.v = v;\nthis.premix_hashcode = premix_hashcode;\nthis.hashcode = hashcode;\nthis.cnt = cnt;\nthis.dirty = dirty;\nthis.cached_seq = cached_seq;\nthis.cljs$lang$protocol_mask$partition0$ = 31850958;\nthis.cljs$lang$protocol_mask$partition1$ = 0;\n});\n(instaparse.auto_flatten_seq.AutoFlattenSeq.prototype.toString = (function (){\nvar self__ = this;\nvar self = this;\nreturn cljs.core.pr_str_STAR_(cljs.core.seq(self));\n}));\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (self,key){\nvar self__ = this;\nvar self__$1 = this;\nreturn self__.v.cljs$core$ILookup$_lookup$arity$2(null,key);\n}));\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (self,key,not_found){\nvar self__ = this;\nvar self__$1 = this;\nreturn self__.v.cljs$core$ILookup$_lookup$arity$3(null,key,not_found);\n}));\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (self){\nvar self__ = this;\nvar self__$1 = this;\nreturn cljs.core.meta(self__.v);\n}));\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.prototype.cljs$core$INext$_next$arity$1 = (function (self){\nvar self__ = this;\nvar self__$1 = this;\nreturn cljs.core.next(cljs.core.seq(self__$1));\n}));\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.prototype.cljs$core$ICounted$_count$arity$1 = (function (self){\nvar self__ = this;\nvar self__$1 = this;\nreturn self__.cnt;\n}));\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (self){\nvar self__ = this;\nvar self__$1 = this;\nreturn self__.hashcode;\n}));\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (self,other){\nvar self__ = this;\nvar self__$1 = this;\nreturn ((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(self__.hashcode,cljs.core.hash(other))) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(self__.cnt,cljs.core.count(other))) && (((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(self__.cnt,(0))) || (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.seq(self__$1),other)))));\n}));\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (self){\nvar self__ = this;\nvar self__$1 = this;\nreturn cljs.core.with_meta(instaparse.auto_flatten_seq.EMPTY,cljs.core.meta(self__$1));\n}));\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (self){\nvar self__ = this;\nvar self__$1 = this;\nreturn cljs.core.first(cljs.core.seq(self__$1));\n}));\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (self){\nvar self__ = this;\nvar self__$1 = this;\nreturn cljs.core.rest(cljs.core.seq(self__$1));\n}));\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (self){\nvar self__ = this;\nvar self__$1 = this;\nif(cljs.core.truth_(self__.cached_seq)){\nreturn self__.cached_seq;\n} else {\n(self__.cached_seq = ((self__.dirty)?instaparse.auto_flatten_seq.flat_seq.cljs$core$IFn$_invoke$arity$1(self__.v):cljs.core.seq(self__.v)));\n\nreturn self__.cached_seq;\n}\n}));\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (self,metamap){\nvar self__ = this;\nvar self__$1 = this;\nreturn (new instaparse.auto_flatten_seq.AutoFlattenSeq(cljs.core.with_meta(self__.v,metamap),self__.premix_hashcode,self__.hashcode,self__.cnt,self__.dirty,null));\n}));\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (self,o){\nvar self__ = this;\nvar self__$1 = this;\nreturn cljs.core.cons(o,self__$1);\n}));\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.prototype.instaparse$auto_flatten_seq$ConjFlat$ = cljs.core.PROTOCOL_SENTINEL);\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.prototype.instaparse$auto_flatten_seq$ConjFlat$conj_flat$arity$2 = (function (self,obj){\nvar self__ = this;\nvar self__$1 = this;\nif((obj == null)){\nreturn self__$1;\n} else {\nif(cljs.core.truth_((instaparse.auto_flatten_seq.afs_QMARK_.cljs$core$IFn$_invoke$arity$1 ? instaparse.auto_flatten_seq.afs_QMARK_.cljs$core$IFn$_invoke$arity$1(obj) : instaparse.auto_flatten_seq.afs_QMARK_.call(null,obj)))){\nif((self__.cnt === (0))){\nreturn obj;\n} else {\nif((cljs.core.count(obj) <= (32))){\nvar phc = (instaparse.auto_flatten_seq.hash_cat.cljs$core$IFn$_invoke$arity$2 ? instaparse.auto_flatten_seq.hash_cat.cljs$core$IFn$_invoke$arity$2(self__$1,obj) : instaparse.auto_flatten_seq.hash_cat.call(null,self__$1,obj));\nvar new_cnt = (self__.cnt + cljs.core.count(obj));\nreturn (new instaparse.auto_flatten_seq.AutoFlattenSeq(cljs.core.into.cljs$core$IFn$_invoke$arity$2(self__.v,obj),phc,cljs.core.mix_collection_hash(phc,new_cnt),new_cnt,(function (){var or__4185__auto__ = self__.dirty;\nif(or__4185__auto__){\nreturn or__4185__auto__;\n} else {\nreturn obj.dirty;\n}\n})(),null));\n} else {\nvar phc = (instaparse.auto_flatten_seq.hash_cat.cljs$core$IFn$_invoke$arity$2 ? instaparse.auto_flatten_seq.hash_cat.cljs$core$IFn$_invoke$arity$2(self__$1,obj) : instaparse.auto_flatten_seq.hash_cat.call(null,self__$1,obj));\nvar new_cnt = (self__.cnt + cljs.core.count(obj));\nreturn (new instaparse.auto_flatten_seq.AutoFlattenSeq(cljs.core.conj.cljs$core$IFn$_invoke$arity$2(self__.v,obj),phc,cljs.core.mix_collection_hash(phc,new_cnt),new_cnt,true,null));\n\n}\n}\n} else {\nvar phc = instaparse.auto_flatten_seq.hash_conj(self__.premix_hashcode,obj);\nvar new_cnt = (self__.cnt + (1));\nreturn (new instaparse.auto_flatten_seq.AutoFlattenSeq(cljs.core.conj.cljs$core$IFn$_invoke$arity$2(self__.v,obj),phc,cljs.core.mix_collection_hash(phc,new_cnt),new_cnt,self__.dirty,null));\n\n}\n}\n}));\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.prototype.instaparse$auto_flatten_seq$ConjFlat$cached_QMARK_$arity$1 = (function (self){\nvar self__ = this;\nvar self__$1 = this;\nreturn self__.cached_seq;\n}));\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.getBasis = (function (){\nreturn new cljs.core.PersistentVector(null, 6, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,\"v\",\"v\",1661996586,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"tag\",\"tag\",-1290361223),new cljs.core.Symbol(null,\"PersistentVector\",\"PersistentVector\",-837570443,null)], null)),cljs.core.with_meta(new cljs.core.Symbol(null,\"premix-hashcode\",\"premix-hashcode\",-1918840795,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"tag\",\"tag\",-1290361223),new cljs.core.Symbol(null,\"number\",\"number\",-1084057331,null)], null)),cljs.core.with_meta(new cljs.core.Symbol(null,\"hashcode\",\"hashcode\",1350412446,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"tag\",\"tag\",-1290361223),new cljs.core.Symbol(null,\"number\",\"number\",-1084057331,null)], null)),cljs.core.with_meta(new cljs.core.Symbol(null,\"cnt\",\"cnt\",1924510325,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"tag\",\"tag\",-1290361223),new cljs.core.Symbol(null,\"number\",\"number\",-1084057331,null)], null)),cljs.core.with_meta(new cljs.core.Symbol(null,\"dirty\",\"dirty\",-1924882488,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"tag\",\"tag\",-1290361223),new cljs.core.Symbol(null,\"boolean\",\"boolean\",-278886877,null)], null)),cljs.core.with_meta(new cljs.core.Symbol(null,\"cached-seq\",\"cached-seq\",1369780142,null),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"tag\",\"tag\",-1290361223),new cljs.core.Symbol(null,\"ISeq\",\"ISeq\",1517365813,null),new cljs.core.Keyword(null,\"unsynchronized-mutable\",\"unsynchronized-mutable\",-164143950),true], null))], null);\n}));\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.cljs$lang$type = true);\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.cljs$lang$ctorStr = \"instaparse.auto-flatten-seq/AutoFlattenSeq\");\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.cljs$lang$ctorPrWriter = (function (this__4428__auto__,writer__4429__auto__,opt__4430__auto__){\nreturn cljs.core._write(writer__4429__auto__,\"instaparse.auto-flatten-seq/AutoFlattenSeq\");\n}));\n\n/**\n * Positional factory function for instaparse.auto-flatten-seq/AutoFlattenSeq.\n */\ninstaparse.auto_flatten_seq.__GT_AutoFlattenSeq = (function instaparse$auto_flatten_seq$__GT_AutoFlattenSeq(v,premix_hashcode,hashcode,cnt,dirty,cached_seq){\nreturn (new instaparse.auto_flatten_seq.AutoFlattenSeq(v,premix_hashcode,hashcode,cnt,dirty,cached_seq));\n});\n\ninstaparse.auto_flatten_seq.hash_cat = (function instaparse$auto_flatten_seq$hash_cat(v1,v2){\nvar c = cljs.core.count(v2);\nvar e = (instaparse.auto_flatten_seq.expt((31),c) | (0));\nreturn (cljs.core.imul(e,v1.premix_hashcode) + (v2.premix_hashcode - e));\n});\n/**\n * Returns the partially calculated hash code, still requires a call to mix-collection-hash\n */\ninstaparse.auto_flatten_seq.hash_ordered_coll_without_mix = (function instaparse$auto_flatten_seq$hash_ordered_coll_without_mix(var_args){\nvar G__25796 = arguments.length;\nswitch (G__25796) {\ncase 1:\nreturn instaparse.auto_flatten_seq.hash_ordered_coll_without_mix.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));\n\nbreak;\ncase 2:\nreturn instaparse.auto_flatten_seq.hash_ordered_coll_without_mix.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));\n\nbreak;\ndefault:\nthrow (new Error([\"Invalid arity: \",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));\n\n}\n});\n\n(instaparse.auto_flatten_seq.hash_ordered_coll_without_mix.cljs$core$IFn$_invoke$arity$1 = (function (coll){\nreturn instaparse.auto_flatten_seq.hash_ordered_coll_without_mix.cljs$core$IFn$_invoke$arity$2((1),coll);\n}));\n\n(instaparse.auto_flatten_seq.hash_ordered_coll_without_mix.cljs$core$IFn$_invoke$arity$2 = (function (existing_unmixed_hash,coll){\nvar unmixed_hash = existing_unmixed_hash;\nvar coll__$1 = cljs.core.seq(coll);\nwhile(true){\nif((!((coll__$1 == null)))){\nvar G__25823 = ((cljs.core.imul((31),unmixed_hash) + cljs.core.hash(cljs.core.first(coll__$1))) | (0));\nvar G__25824 = cljs.core.next(coll__$1);\nunmixed_hash = G__25823;\ncoll__$1 = G__25824;\ncontinue;\n} else {\nreturn unmixed_hash;\n}\nbreak;\n}\n}));\n\n(instaparse.auto_flatten_seq.hash_ordered_coll_without_mix.cljs$lang$maxFixedArity = 2);\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL);\n\n(instaparse.auto_flatten_seq.AutoFlattenSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (afs,writer,opts){\nvar afs__$1 = this;\nreturn cljs.core._pr_writer(cljs.core.seq(afs__$1),writer,opts);\n}));\ninstaparse.auto_flatten_seq.auto_flatten_seq = (function instaparse$auto_flatten_seq$auto_flatten_seq(v){\nvar v__$1 = cljs.core.vec(v);\nreturn (new instaparse.auto_flatten_seq.AutoFlattenSeq(v__$1,instaparse.auto_flatten_seq.hash_ordered_coll_without_mix.cljs$core$IFn$_invoke$arity$1(v__$1),cljs.core.hash(v__$1),cljs.core.count(v__$1),false,null));\n});\ninstaparse.auto_flatten_seq.EMPTY = instaparse.auto_flatten_seq.auto_flatten_seq(cljs.core.PersistentVector.EMPTY);\ninstaparse.auto_flatten_seq.afs_QMARK_ = (function instaparse$auto_flatten_seq$afs_QMARK_(s){\nreturn (s instanceof instaparse.auto_flatten_seq.AutoFlattenSeq);\n});\ninstaparse.auto_flatten_seq.true_count = (function instaparse$auto_flatten_seq$true_count(v){\nif(instaparse.auto_flatten_seq.afs_QMARK_(v)){\nreturn cljs.core.count(v.v);\n} else {\nreturn cljs.core.count(v);\n}\n});\ninstaparse.auto_flatten_seq.flat_vec_helper = (function instaparse$auto_flatten_seq$flat_vec_helper(acc,v){\nwhile(true){\nvar temp__5733__auto__ = cljs.core.seq(v);\nif(temp__5733__auto__){\nvar s = temp__5733__auto__;\nvar fst = cljs.core.first(v);\nif(instaparse.auto_flatten_seq.afs_QMARK_(fst)){\nvar G__25825 = (instaparse.auto_flatten_seq.flat_vec_helper.cljs$core$IFn$_invoke$arity$2 ? instaparse.auto_flatten_seq.flat_vec_helper.cljs$core$IFn$_invoke$arity$2(acc,fst) : instaparse.auto_flatten_seq.flat_vec_helper.call(null,acc,fst));\nvar G__25826 = cljs.core.next(v);\nacc = G__25825;\nv = G__25826;\ncontinue;\n} else {\nvar G__25828 = cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(acc,fst);\nvar G__25829 = cljs.core.next(v);\nacc = G__25828;\nv = G__25829;\ncontinue;\n}\n} else {\nreturn acc;\n}\nbreak;\n}\n});\n/**\n * Turns deep vector (like the vector inside of FlattenOnDemandVector) into a flat vec\n */\ninstaparse.auto_flatten_seq.flat_vec = (function instaparse$auto_flatten_seq$flat_vec(v){\nreturn cljs.core.persistent_BANG_(instaparse.auto_flatten_seq.flat_vec_helper(cljs.core.transient$(cljs.core.PersistentVector.EMPTY),v));\n});\n\n/**\n * @interface\n */\ninstaparse.auto_flatten_seq.GetVec = function(){};\n\ninstaparse.auto_flatten_seq.get_vec = (function instaparse$auto_flatten_seq$get_vec(self){\nif((((!((self == null)))) && ((!((self.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1 == null)))))){\nreturn self.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(self);\n} else {\nvar x__4487__auto__ = (((self == null))?null:self);\nvar m__4488__auto__ = (instaparse.auto_flatten_seq.get_vec[goog.typeOf(x__4487__auto__)]);\nif((!((m__4488__auto__ == null)))){\nreturn (m__4488__auto__.cljs$core$IFn$_invoke$arity$1 ? m__4488__auto__.cljs$core$IFn$_invoke$arity$1(self) : m__4488__auto__.call(null,self));\n} else {\nvar m__4485__auto__ = (instaparse.auto_flatten_seq.get_vec[\"_\"]);\nif((!((m__4485__auto__ == null)))){\nreturn (m__4485__auto__.cljs$core$IFn$_invoke$arity$1 ? m__4485__auto__.cljs$core$IFn$_invoke$arity$1(self) : m__4485__auto__.call(null,self));\n} else {\nthrow cljs.core.missing_protocol(\"GetVec.get-vec\",self);\n}\n}\n}\n});\n\n\n/**\n* @constructor\n * @implements {cljs.core.IIndexed}\n * @implements {cljs.core.IVector}\n * @implements {cljs.core.IReversible}\n * @implements {cljs.core.IKVReduce}\n * @implements {cljs.core.IEquiv}\n * @implements {cljs.core.IHash}\n * @implements {cljs.core.IFn}\n * @implements {cljs.core.ICollection}\n * @implements {cljs.core.IEmptyableCollection}\n * @implements {cljs.core.ICounted}\n * @implements {instaparse.auto_flatten_seq.GetVec}\n * @implements {cljs.core.ISeqable}\n * @implements {cljs.core.IMeta}\n * @implements {cljs.core.IStack}\n * @implements {cljs.core.IComparable}\n * @implements {cljs.core.ISequential}\n * @implements {cljs.core.IWithMeta}\n * @implements {cljs.core.IAssociative}\n * @implements {cljs.core.ILookup}\n*/\ninstaparse.auto_flatten_seq.FlattenOnDemandVector = (function (v,hashcode,cnt,flat){\nthis.v = v;\nthis.hashcode = hashcode;\nthis.cnt = cnt;\nthis.flat = flat;\nthis.cljs$lang$protocol_mask$partition0$ = 167142175;\nthis.cljs$lang$protocol_mask$partition1$ = 2048;\n});\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.toString = (function (){\nvar self__ = this;\nvar self = this;\nreturn cljs.core.pr_str_STAR_(self.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(null));\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (self,key){\nvar self__ = this;\nvar self__$1 = this;\nreturn self__$1.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(null).cljs$core$ILookup$_lookup$arity$2(null,key);\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (self,key,not_found){\nvar self__ = this;\nvar self__$1 = this;\nreturn self__$1.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(null).cljs$core$ILookup$_lookup$arity$3(null,key,not_found);\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.instaparse$auto_flatten_seq$GetVec$ = cljs.core.PROTOCOL_SENTINEL);\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1 = (function (self){\nvar self__ = this;\nvar self__$1 = this;\nif(cljs.core.not(cljs.core.deref(self__.flat))){\ncljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(self__.flat,(function (_){\nreturn cljs.core.with_meta(instaparse.auto_flatten_seq.flat_vec(cljs.core.deref(self__.v)),cljs.core.meta(cljs.core.deref(self__.v)));\n}));\n\ncljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(self__.v,(function (_){\nreturn null;\n}));\n} else {\n}\n\nreturn cljs.core.deref(self__.flat);\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (self,f,init){\nvar self__ = this;\nvar self__$1 = this;\nreturn self__$1.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(null).cljs$core$IKVReduce$_kv_reduce$arity$3(null,f,init);\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$IIndexed$_nth$arity$2 = (function (self,i){\nvar self__ = this;\nvar self__$1 = this;\nreturn self__$1.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(null).cljs$core$IIndexed$_nth$arity$2(null,i);\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$IIndexed$_nth$arity$3 = (function (self,i,not_found){\nvar self__ = this;\nvar self__$1 = this;\nreturn self__$1.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(null).cljs$core$IIndexed$_nth$arity$3(null,i,not_found);\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$IVector$_assoc_n$arity$3 = (function (self,i,val){\nvar self__ = this;\nvar self__$1 = this;\nreturn self__$1.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(null).cljs$core$IVector$_assoc_n$arity$3(null,i,val);\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$IMeta$_meta$arity$1 = (function (self){\nvar self__ = this;\nvar self__$1 = this;\nif(cljs.core.truth_(cljs.core.deref(self__.flat))){\nreturn cljs.core.meta(cljs.core.deref(self__.flat));\n} else {\nreturn cljs.core.meta(cljs.core.deref(self__.v));\n}\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$ICounted$_count$arity$1 = (function (self){\nvar self__ = this;\nvar self__$1 = this;\nreturn self__.cnt;\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$IStack$_peek$arity$1 = (function (self){\nvar self__ = this;\nvar self__$1 = this;\nreturn self__$1.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(null).cljs$core$IStack$_peek$arity$1(null);\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$IStack$_pop$arity$1 = (function (self){\nvar self__ = this;\nvar self__$1 = this;\nreturn self__$1.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(null).cljs$core$IStack$_pop$arity$1(null);\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$IReversible$_rseq$arity$1 = (function (self){\nvar self__ = this;\nvar self__$1 = this;\nif((self__.cnt > (0))){\nreturn cljs.core.rseq(self__$1.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(null));\n} else {\nreturn null;\n}\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$IHash$_hash$arity$1 = (function (self){\nvar self__ = this;\nvar self__$1 = this;\nreturn self__.hashcode;\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (self,other){\nvar self__ = this;\nvar self__$1 = this;\nreturn ((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(self__.hashcode,cljs.core.hash(other))) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(self__.cnt,cljs.core.count(other))) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(self__$1.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(null),other)));\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (self){\nvar self__ = this;\nvar self__$1 = this;\nreturn cljs.core.with_meta(cljs.core.PersistentVector.EMPTY,cljs.core.meta(self__$1));\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (self,i,val){\nvar self__ = this;\nvar self__$1 = this;\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(self__$1.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(null),i,val);\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = (function (self,k){\nvar self__ = this;\nvar self__$1 = this;\nreturn self__$1.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(null).cljs$core$IAssociative$_contains_key_QMARK_$arity$2(null,k);\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (self){\nvar self__ = this;\nvar self__$1 = this;\nreturn cljs.core.seq(self__$1.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(null));\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (self,metamap){\nvar self__ = this;\nvar self__$1 = this;\nif(cljs.core.truth_(cljs.core.deref(self__.flat))){\nreturn (new instaparse.auto_flatten_seq.FlattenOnDemandVector(cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.deref(self__.v)),self__.hashcode,self__.cnt,cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.with_meta(cljs.core.deref(self__.flat),metamap))));\n} else {\nreturn (new instaparse.auto_flatten_seq.FlattenOnDemandVector(cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.with_meta(cljs.core.deref(self__.v),metamap)),self__.hashcode,self__.cnt,cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.deref(self__.flat))));\n}\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$ICollection$_conj$arity$2 = (function (self,obj){\nvar self__ = this;\nvar self__$1 = this;\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$2(self__$1.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(null),obj);\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.call = (function (unused__10585__auto__){\nvar self__ = this;\nvar self__ = this;\nvar G__25801 = (arguments.length - (1));\nswitch (G__25801) {\ncase (1):\nreturn self__.cljs$core$IFn$_invoke$arity$1((arguments[(1)]));\n\nbreak;\ncase (2):\nreturn self__.cljs$core$IFn$_invoke$arity$2((arguments[(1)]),(arguments[(2)]));\n\nbreak;\ndefault:\nthrow (new Error([\"Invalid arity: \",cljs.core.str.cljs$core$IFn$_invoke$arity$1((arguments.length - (1)))].join('')));\n\n}\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.apply = (function (self__,args25799){\nvar self__ = this;\nvar self____$1 = this;\nreturn self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args25799)));\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$IFn$_invoke$arity$1 = (function (arg){\nvar self__ = this;\nvar self = this;\nreturn self.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(null).cljs$core$IFn$_invoke$arity$2(null,arg);\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$IFn$_invoke$arity$2 = (function (arg,not_found){\nvar self__ = this;\nvar self = this;\nreturn self.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(null).cljs$core$IFn$_invoke$arity$3(null,arg,not_found);\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$IComparable$_compare$arity$2 = (function (self,that){\nvar self__ = this;\nvar self__$1 = this;\nreturn cljs.core._compare(self__$1.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(null),that);\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.getBasis = (function (){\nreturn new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"v\",\"v\",1661996586,null),cljs.core.with_meta(new cljs.core.Symbol(null,\"hashcode\",\"hashcode\",1350412446,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"tag\",\"tag\",-1290361223),new cljs.core.Symbol(null,\"number\",\"number\",-1084057331,null)], null)),cljs.core.with_meta(new cljs.core.Symbol(null,\"cnt\",\"cnt\",1924510325,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"tag\",\"tag\",-1290361223),new cljs.core.Symbol(null,\"number\",\"number\",-1084057331,null)], null)),new cljs.core.Symbol(null,\"flat\",\"flat\",-2076841507,null)], null);\n}));\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.cljs$lang$type = true);\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.cljs$lang$ctorStr = \"instaparse.auto-flatten-seq/FlattenOnDemandVector\");\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.cljs$lang$ctorPrWriter = (function (this__4428__auto__,writer__4429__auto__,opt__4430__auto__){\nreturn cljs.core._write(writer__4429__auto__,\"instaparse.auto-flatten-seq/FlattenOnDemandVector\");\n}));\n\n/**\n * Positional factory function for instaparse.auto-flatten-seq/FlattenOnDemandVector.\n */\ninstaparse.auto_flatten_seq.__GT_FlattenOnDemandVector = (function instaparse$auto_flatten_seq$__GT_FlattenOnDemandVector(v,hashcode,cnt,flat){\nreturn (new instaparse.auto_flatten_seq.FlattenOnDemandVector(v,hashcode,cnt,flat));\n});\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL);\n\n(instaparse.auto_flatten_seq.FlattenOnDemandVector.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (v,writer,opts){\nvar v__$1 = this;\nreturn cljs.core._pr_writer(v__$1.instaparse$auto_flatten_seq$GetVec$get_vec$arity$1(null),writer,opts);\n}));\ninstaparse.auto_flatten_seq.convert_afs_to_vec = (function instaparse$auto_flatten_seq$convert_afs_to_vec(afs){\nif(cljs.core.truth_(afs.dirty)){\nif(cljs.core.truth_(afs.instaparse$auto_flatten_seq$ConjFlat$cached_QMARK_$arity$1(null))){\nreturn cljs.core.vec(cljs.core.seq(afs));\n} else {\nreturn (new instaparse.auto_flatten_seq.FlattenOnDemandVector(cljs.core.atom.cljs$core$IFn$_invoke$arity$1(afs.v),afs.hashcode,afs.cnt,cljs.core.atom.cljs$core$IFn$_invoke$arity$1(null)));\n}\n} else {\nreturn afs.v;\n\n}\n});\n","~:ns-info",["^ ","~:rename-macros",null,"~:renames",["^ "],"~:meta",["^ ","~:file","instaparse/auto_flatten_seq.cljc","~:line",1,"~:column",5,"~:end-line",1,"~:end-column",32],"~:ns-aliases",["^ ","~$cljs.loader","~$shadow.loader"],"~:use-macros",null,"~:excludes",["~#set",[]],"~:name","~$instaparse.auto-flatten-seq","~:op","~:ns","~:imports",null,"~:requires",["^ ","~$cljs.core","^G","~$goog","^H"],"~:seen",["^@",[]],"~:uses",null,"~:require-macros",["^ ","^G","^G"],"~:form",["~#list",["~$ns","^B"]],"~:flags",["^ "],"~:js-deps",["^ "],"~:deps",["^H","^G"]],"^D","^B","~:resource-id",["~:shadow.build.classpath/resource","instaparse/auto_flatten_seq.cljc"],"~:compiled-at",1590237781677,"~:resource-name","instaparse/auto_flatten_seq.cljc","~:warnings",[],"~:source","(ns instaparse.auto-flatten-seq\r\n #?(:clj (:import clojure.lang.PersistentVector))\r\n #?(:clj (:require [clojure.core.protocols :refer [IKVReduce]])))\r\n\r\n(def ^:const threshold 32)\r\n\r\n(defprotocol ConjFlat\r\n (conj-flat [self obj])\r\n (cached? [self]))\r\n\r\n; Need a backwards compatible version of mix-collection-hash\r\n#?(:clj (defmacro compile-if [test then else]\r\n (if (eval test)\r\n then\r\n else)))\r\n\r\n#?(:clj (defmacro mix-collection-hash-bc [x y]\r\n ;; backwards-compatible\r\n `(compile-if (resolve 'clojure.core/mix-collection-hash)\r\n (mix-collection-hash ~x ~y)\r\n ~x)))\r\n\r\n(declare EMPTY hash-cat afs? true-count)\r\n\r\n#?(:clj\r\n (defmacro hash-conj [premix-hash-v item]\r\n `(unchecked-add-int (unchecked-multiply-int 31 ~premix-hash-v) (hash ~item)))\r\n :cljs\r\n (defn ^number hash-conj\r\n \"Returns the hash code, consistent with =, for an external ordered\r\n collection implementing Iterable.\r\n See http://clojure.org/data_structures#hash for full algorithms.\"\r\n [unmixed-hash item]\r\n (+ (imul 31 unmixed-hash) (hash item))))\r\n\r\n#?(:clj\r\n (defn- expt [base pow]\r\n (if (zero? pow)\r\n 1\r\n (loop [n (int pow), y (int 1), z (int base)]\r\n (let [t (even? n), n (quot n 2)]\r\n (cond\r\n t (recur n y (unchecked-multiply-int z z))\r\n (zero? n) (unchecked-multiply-int z y)\r\n :else (recur n (unchecked-multiply-int z y) (unchecked-multiply-int z z)))))))\r\n :cljs\r\n (defn- expt [base pow]\r\n (if (zero? pow)\r\n 1\r\n (loop [n (int pow), y (int 1), z (int base)]\r\n (let [t (even? n), n (quot n 2)]\r\n (cond\r\n t (recur n y (imul z z))\r\n (zero? n) (imul z y)\r\n :else (recur n (imul z y) (imul z z))))))))\r\n\r\n(defn delve [v index]\r\n (loop [v (get-in v index)\r\n index index]\r\n (if (afs? v)\r\n (recur (get v 0) (conj index 0))\r\n index)))\r\n\r\n(defn advance [v index]\r\n (cond\r\n (= (count index) 1)\r\n (when (< (peek index) (dec (true-count v)))\r\n (delve v [(inc (peek index))]))\r\n \r\n (< (peek index) (dec (true-count (get-in v (pop index)))))\r\n (delve v (conj (pop index) (inc (peek index))))\r\n \r\n :else\r\n (recur v (pop index))))\r\n\r\n(defn flat-seq\r\n ([v] (if (pos? (count v)) \r\n (flat-seq v (delve v [0]))\r\n nil))\r\n ([v index]\r\n (lazy-seq\r\n (cons (get-in v index) \r\n (when-let [next-index (advance v index)] \r\n (flat-seq v next-index)))))) \r\n\r\n#?(:clj\r\n(deftype AutoFlattenSeq [^PersistentVector v ^int premix-hashcode ^int hashcode\r\n ^int cnt ^boolean dirty\r\n ^:unsynchronized-mutable ^clojure.lang.ISeq cached-seq]\r\n Object\r\n (toString [self] (.toString (seq self)))\r\n (hashCode [self] hashcode)\r\n (equals [self other]\r\n (and (instance? AutoFlattenSeq other)\r\n (== hashcode (.hashcode ^AutoFlattenSeq other))\r\n (== cnt (.cnt ^AutoFlattenSeq other))\r\n (= dirty (.dirty ^AutoFlattenSeq other))\r\n (= v (.v ^AutoFlattenSeq other))))\r\n clojure.lang.IHashEq\r\n (hasheq [self] hashcode)\r\n java.util.Collection\r\n (iterator [self]\r\n (if-let [^java.util.Collection s (seq self)]\r\n (.iterator s)\r\n (let [^java.util.Collection e ()]\r\n (.iterator e))))\r\n (size [self]\r\n cnt)\r\n (toArray [self]\r\n (let [^java.util.Collection s (seq self)]\r\n (.toArray s)))\r\n clojure.lang.Sequential\r\n clojure.lang.ISeq\r\n (equiv [self other]\r\n (and (== hashcode (hash other))\r\n (== cnt (count other))\r\n (or (== cnt 0)\r\n (= (seq self) other))))\r\n (empty [self] (with-meta EMPTY (meta self))) \r\n (first [self] (first (seq self)))\r\n (next [self] (next (seq self)))\r\n (more [self] (rest (seq self)))\r\n (cons [self obj]\r\n (cons obj self))\r\n ConjFlat\r\n (conj-flat [self obj]\r\n (cond\r\n (nil? obj) self\r\n (afs? obj)\r\n (cond\r\n (zero? cnt) obj\r\n (<= (count obj) threshold)\r\n (let [phc (hash-cat self obj)\r\n new-cnt (+ cnt (count obj))]\r\n (AutoFlattenSeq. (into v obj) phc (mix-collection-hash-bc phc new-cnt) new-cnt\r\n (or dirty (.dirty ^AutoFlattenSeq obj)) nil))\r\n :else\r\n (let [phc (hash-cat self obj)\r\n new-cnt (+ cnt (count obj))]\r\n (AutoFlattenSeq. (conj v obj) phc (mix-collection-hash-bc phc new-cnt) new-cnt\r\n true nil)))\r\n :else \r\n (let [phc (hash-conj premix-hashcode obj)\r\n new-cnt (inc cnt)]\r\n (AutoFlattenSeq. (conj v obj) phc (mix-collection-hash-bc phc new-cnt) new-cnt dirty nil))))\r\n (cached? [self] cached-seq)\r\n clojure.lang.Counted\r\n (count [self] cnt)\r\n clojure.lang.ILookup\r\n (valAt [self key] \r\n (.valAt v key))\r\n (valAt [self key not-found]\r\n (.valAt v key not-found))\r\n clojure.lang.IObj\r\n (withMeta [self metamap]\r\n (AutoFlattenSeq. (with-meta v metamap) premix-hashcode hashcode cnt dirty nil))\r\n clojure.lang.IMeta\r\n (meta [self]\r\n (meta v))\r\n clojure.lang.Seqable\r\n (seq [self]\r\n (if cached-seq cached-seq\r\n (do\r\n (set! cached-seq (if dirty (flat-seq v) (seq v)))\r\n cached-seq))))\r\n:cljs\r\n(deftype AutoFlattenSeq [^PersistentVector v ^number premix-hashcode ^number hashcode ^number cnt ^boolean dirty\r\n ^:unsynchronized-mutable ^ISeq cached-seq]\r\n Object\r\n (toString [self] (pr-str* (seq self)))\r\n IHash\r\n (-hash [self] hashcode)\r\n ISequential\r\n ISeq\r\n (-first [self] (first (seq self)))\r\n (-rest [self] (rest (seq self)))\r\n IEquiv\r\n (-equiv [self other]\r\n (and ;(instance? AutoFlattenSeq other)\r\n (= hashcode (hash other))\r\n (= cnt (count other))\r\n (or (= cnt 0)\r\n (= (seq self) other))))\r\n ICollection\r\n (-conj [self o] (cons o self))\r\n IEmptyableCollection\r\n (-empty [self] (with-meta EMPTY (meta self))) \r\n INext\r\n (-next [self] (next (seq self)))\r\n ConjFlat\r\n (conj-flat [self obj]\r\n (cond\r\n (nil? obj) self\r\n (afs? obj)\r\n (cond\r\n (zero? cnt) obj\r\n (<= (count obj) threshold)\r\n (let [phc (hash-cat self obj)\r\n new-cnt (+ cnt (count obj))]\r\n (AutoFlattenSeq. (into v obj) phc (mix-collection-hash phc new-cnt) new-cnt\r\n (or dirty (.-dirty ^AutoFlattenSeq obj)) nil))\r\n :else\r\n (let [phc (hash-cat self obj)\r\n new-cnt (+ cnt (count obj))]\r\n (AutoFlattenSeq. (conj v obj) phc (mix-collection-hash phc new-cnt) new-cnt\r\n true nil)))\r\n :else\r\n (let [phc (hash-conj premix-hashcode obj)\r\n new-cnt (inc cnt)]\r\n (AutoFlattenSeq. (conj v obj) phc (mix-collection-hash phc new-cnt) new-cnt dirty nil))))\r\n (cached? [self] cached-seq)\r\n ICounted\r\n (-count [self] cnt)\r\n ILookup\r\n (-lookup [self key]\r\n (-lookup v key))\r\n (-lookup [self key not-found]\r\n (-lookup v key not-found))\r\n IWithMeta\r\n (-with-meta [self metamap]\r\n (AutoFlattenSeq. (with-meta v metamap) premix-hashcode hashcode cnt dirty nil))\r\n IMeta\r\n (-meta [self]\r\n (meta v))\r\n ISeqable\r\n (-seq [self]\r\n (if cached-seq cached-seq\r\n (do\r\n (set! cached-seq (if dirty (flat-seq v) (seq v)))\r\n cached-seq)))))\r\n\r\n#?(:clj\r\n (defn- hash-cat ^long [^AutoFlattenSeq v1 ^AutoFlattenSeq v2]\r\n (let [c (count v2)\r\n e (int (expt 31 c))]\r\n (unchecked-add-int\r\n (unchecked-multiply-int e (.premix-hashcode v1))\r\n (unchecked-subtract-int (.premix-hashcode v2) e))))\r\n :cljs\r\n (defn- hash-cat ^number [^AutoFlattenSeq v1 ^AutoFlattenSeq v2]\r\n (let [c (count v2)\r\n e (int (expt 31 c))]\r\n (+ (imul e (.-premix-hashcode v1))\r\n (- (.-premix-hashcode v2) e)))))\r\n\r\n#?(:clj\r\n (defn hash-ordered-coll-without-mix ^long [v]\r\n (compile-if (resolve 'clojure.core/mix-collection-hash)\r\n (let [thirty-one (int 31)\r\n cnt (count v)]\r\n (loop [acc (int 1) i (int 0)]\r\n (if (< i cnt)\r\n (recur (unchecked-add-int\r\n (unchecked-multiply-int thirty-one acc)\r\n (hash (v i)))\r\n (inc i))\r\n acc)))\r\n (hash v)))\r\n :cljs\r\n (defn ^number hash-ordered-coll-without-mix\r\n \"Returns the partially calculated hash code, still requires a call to mix-collection-hash\"\r\n ([coll]\r\n (hash-ordered-coll-without-mix 1 coll))\r\n ([existing-unmixed-hash coll]\r\n (loop [unmixed-hash existing-unmixed-hash\r\n coll (seq coll)]\r\n (if-not (nil? coll)\r\n (recur (bit-or (+ (imul 31 unmixed-hash) (hash (first coll))) 0) \r\n (next coll))\r\n unmixed-hash)))))\r\n\r\n#?(:cljs\r\n (extend-protocol IPrintWithWriter\r\n instaparse.auto-flatten-seq/AutoFlattenSeq\r\n (-pr-writer [afs writer opts]\r\n (-pr-writer (seq afs) writer opts))))\r\n\r\n(defn auto-flatten-seq [v]\r\n (let [v (vec v)]\r\n (AutoFlattenSeq. v\r\n (hash-ordered-coll-without-mix v)\r\n (hash v) (count v)\r\n false nil)))\r\n\r\n(def EMPTY (auto-flatten-seq []))\r\n\r\n(defn afs? [s]\r\n (instance? AutoFlattenSeq s))\r\n\r\n(defn true-count [v]\r\n (if (afs? v)\r\n (count (.-v ^AutoFlattenSeq v))\r\n (count v)))\r\n\r\n;; For hiccup format, we need to be able to convert the seq to a vector.\r\n\r\n(defn flat-vec-helper [acc v]\r\n (if-let [s (seq v)]\r\n (let [fst (first v)]\r\n (if (afs? fst) \r\n (recur (flat-vec-helper acc fst) (next v))\r\n (recur (conj! acc fst) (next v))))\r\n acc))\r\n\r\n(defn flat-vec\r\n \"Turns deep vector (like the vector inside of FlattenOnDemandVector) into a flat vec\"\r\n [v]\r\n (persistent! (flat-vec-helper (transient []) v)))\r\n\r\n(defprotocol GetVec\r\n (^PersistentVector get-vec [self]))\r\n\r\n#?(:clj\r\n(deftype FlattenOnDemandVector [v ; ref containing PersistentVector or nil \r\n ^int hashcode\r\n ^int cnt\r\n flat] ; ref containing PersistentVector or nil \r\n GetVec\r\n (get-vec [self] \r\n (when (not @flat) \r\n (dosync\r\n (when (not @flat)\r\n (ref-set flat (with-meta (flat-vec @v) (meta @v))) \r\n (ref-set v nil)))) ; clear out v so it can be garbage collected\r\n @flat)\r\n \r\n Object\r\n (toString [self] (.toString (get-vec self)))\r\n (hashCode [self] hashcode)\r\n (equals [self other]\r\n (and (instance? FlattenOnDemandVector other)\r\n (== hashcode (.hashcode ^FlattenOnDemandVector other))\r\n (== cnt (.cnt ^FlattenOnDemandVector other))\r\n (= v (.v ^FlattenOnDemandVector other))\r\n (= flat (.flat ^FlattenOnDemandVector other))))\r\n clojure.lang.IHashEq\r\n (hasheq [self] hashcode)\r\n java.util.Collection\r\n (iterator [self]\r\n (.iterator (get-vec self)))\r\n (size [self]\r\n cnt)\r\n (toArray [self]\r\n (.toArray (get-vec self)))\r\n clojure.lang.IPersistentCollection\r\n (equiv [self other]\r\n (or \r\n (and (== hashcode (hash other))\r\n (== cnt (count other))\r\n (= (get-vec self) other))))\r\n (empty [self] (with-meta [] (meta self))) \r\n clojure.lang.Counted\r\n (count [self] cnt)\r\n clojure.lang.IPersistentVector\r\n (assoc [self i val]\r\n (assoc (get-vec self) i val))\r\n (assocN [self i val]\r\n (.assocN (get-vec self) i val))\r\n (length [self]\r\n cnt)\r\n (cons [self obj]\r\n (conj (get-vec self) obj))\r\n clojure.lang.IObj\r\n (withMeta [self metamap] \r\n (if @flat\r\n (FlattenOnDemandVector. (ref @v) hashcode cnt (ref (with-meta @flat metamap)))\r\n (FlattenOnDemandVector. (ref (with-meta @v metamap)) hashcode cnt (ref @flat))))\r\n clojure.lang.IMeta\r\n (meta [self]\r\n (if @flat (meta @flat) (meta @v)))\r\n clojure.lang.Seqable\r\n (seq [self]\r\n (seq (get-vec self)))\r\n clojure.lang.ILookup\r\n (valAt [self key]\r\n (.valAt (get-vec self) key))\r\n (valAt [self key not-found]\r\n (.valAt (get-vec self) key not-found))\r\n clojure.lang.Indexed\r\n (nth [self i]\r\n (.nth (get-vec self) i))\r\n (nth [self i not-found]\r\n (.nth (get-vec self) i not-found))\r\n clojure.lang.IFn\r\n (invoke [self arg]\r\n (.invoke (get-vec self) arg))\r\n (applyTo [self arglist]\r\n (.applyTo (get-vec self) arglist))\r\n clojure.lang.Reversible\r\n (rseq [self]\r\n (if (pos? cnt)\r\n (rseq (get-vec self))\r\n nil))\r\n clojure.lang.IPersistentStack\r\n (peek [self] \r\n (peek (get-vec self)))\r\n (pop [self] \r\n (pop (get-vec self)))\r\n clojure.lang.Associative\r\n (containsKey [self k]\r\n (.containsKey (get-vec self) k))\r\n (entryAt [self k]\r\n (.entryAt (get-vec self) k))\r\n IKVReduce\r\n (kv-reduce [self f init]\r\n (.kvreduce (get-vec self) f init))\r\n java.lang.Comparable\r\n (compareTo [self that]\r\n (.compareTo (get-vec self) that))\r\n java.util.List\r\n (get [self i] (nth (get-vec self) i))\r\n (indexOf [self o] (.indexOf (get-vec self) o))\r\n (lastIndexOf [self o] (.lastIndexOf (get-vec self) o))\r\n (listIterator [self]\r\n (.listIterator (get-vec self) 0))\r\n (listIterator [self i]\r\n (.listIterator (get-vec self) i))\r\n (subList [self a z]\r\n (.subList (get-vec self) a z))\r\n )\r\n:cljs\r\n(deftype FlattenOnDemandVector [v ; atom containing PersistentVector or nil \r\n ^number hashcode\r\n ^number cnt\r\n flat] ; atom containing PersistentVector or nil\r\n GetVec\r\n (get-vec [self] \r\n (when (not @flat) \r\n (swap! flat (fn [_] (with-meta (flat-vec @v) (meta @v))))\r\n (swap! v (fn [_] nil))) ; clear out v so it can be garbage collected \r\n @flat)\r\n \r\n Object\r\n (toString [self]\r\n (pr-str* (get-vec self)))\r\n IHash\r\n (-hash [self] hashcode)\r\n IEquiv\r\n (-equiv [self other]\r\n (or \r\n (and (= hashcode (hash other))\r\n (= cnt (count other))\r\n (= (get-vec self) other))))\r\n IEmptyableCollection\r\n (-empty [self] (with-meta [] (meta self))) \r\n ICounted\r\n (-count [self] cnt)\r\n IVector\r\n (-assoc-n [self i val]\r\n (-assoc-n (get-vec self) i val))\r\n ICollection\r\n (-conj [self obj]\r\n (conj (get-vec self) obj))\r\n IWithMeta\r\n (-with-meta [self metamap] \r\n (if @flat\r\n (FlattenOnDemandVector. (atom @v) hashcode cnt (atom (with-meta @flat metamap)))\r\n (FlattenOnDemandVector. (atom (with-meta @v metamap)) hashcode cnt (atom @flat))))\r\n IMeta\r\n (-meta [self]\r\n (if @flat (meta @flat) (meta @v)))\r\n ISequential\r\n ISeqable\r\n (-seq [self]\r\n (seq (get-vec self)))\r\n ILookup\r\n (-lookup [self key]\r\n (-lookup (get-vec self) key))\r\n (-lookup [se