["^ ","~:output",["^ ","~:js","goog.provide('datascript.query');\ndatascript.query.lru_cache_size = (100);\n\n\n\n/**\n* @constructor\n * @implements {cljs.core.IRecord}\n * @implements {cljs.core.IKVReduce}\n * @implements {cljs.core.IEquiv}\n * @implements {cljs.core.IHash}\n * @implements {cljs.core.ICollection}\n * @implements {cljs.core.ICounted}\n * @implements {cljs.core.ISeqable}\n * @implements {cljs.core.IMeta}\n * @implements {cljs.core.ICloneable}\n * @implements {cljs.core.IPrintWithWriter}\n * @implements {cljs.core.IIterable}\n * @implements {cljs.core.IWithMeta}\n * @implements {cljs.core.IAssociative}\n * @implements {cljs.core.IMap}\n * @implements {cljs.core.ILookup}\n*/\ndatascript.query.Context = (function (rels,sources,rules,__meta,__extmap,__hash){\nthis.rels = rels;\nthis.sources = sources;\nthis.rules = rules;\nthis.__meta = __meta;\nthis.__extmap = __extmap;\nthis.__hash = __hash;\nthis.cljs$lang$protocol_mask$partition0$ = 2230716170;\nthis.cljs$lang$protocol_mask$partition1$ = 139264;\n});\n(datascript.query.Context.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (this__4439__auto__,k__4440__auto__){\nvar self__ = this;\nvar this__4439__auto____$1 = this;\nreturn this__4439__auto____$1.cljs$core$ILookup$_lookup$arity$3(null,k__4440__auto__,null);\n}));\n\n(datascript.query.Context.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (this__4441__auto__,k25097,else__4442__auto__){\nvar self__ = this;\nvar this__4441__auto____$1 = this;\nvar G__25101 = k25097;\nvar G__25101__$1 = (((G__25101 instanceof cljs.core.Keyword))?G__25101.fqn:null);\nswitch (G__25101__$1) {\ncase \"rels\":\nreturn self__.rels;\n\nbreak;\ncase \"sources\":\nreturn self__.sources;\n\nbreak;\ncase \"rules\":\nreturn self__.rules;\n\nbreak;\ndefault:\nreturn cljs.core.get.cljs$core$IFn$_invoke$arity$3(self__.__extmap,k25097,else__4442__auto__);\n\n}\n}));\n\n(datascript.query.Context.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (this__4458__auto__,f__4459__auto__,init__4460__auto__){\nvar self__ = this;\nvar this__4458__auto____$1 = this;\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (ret__4461__auto__,p__25102){\nvar vec__25103 = p__25102;\nvar k__4462__auto__ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25103,(0),null);\nvar v__4463__auto__ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25103,(1),null);\nreturn (f__4459__auto__.cljs$core$IFn$_invoke$arity$3 ? f__4459__auto__.cljs$core$IFn$_invoke$arity$3(ret__4461__auto__,k__4462__auto__,v__4463__auto__) : f__4459__auto__.call(null,ret__4461__auto__,k__4462__auto__,v__4463__auto__));\n}),init__4460__auto__,this__4458__auto____$1);\n}));\n\n(datascript.query.Context.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (this__4453__auto__,writer__4454__auto__,opts__4455__auto__){\nvar self__ = this;\nvar this__4453__auto____$1 = this;\nvar pr_pair__4456__auto__ = (function (keyval__4457__auto__){\nreturn cljs.core.pr_sequential_writer(writer__4454__auto__,cljs.core.pr_writer,\"\",\" \",\"\",opts__4455__auto__,keyval__4457__auto__);\n});\nreturn cljs.core.pr_sequential_writer(writer__4454__auto__,pr_pair__4456__auto__,\"#datascript.query.Context{\",\", \",\"}\",opts__4455__auto__,cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),self__.rels],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"sources\",\"sources\",-321166424),self__.sources],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"rules\",\"rules\",1198912366),self__.rules],null))], null),self__.__extmap));\n}));\n\n(datascript.query.Context.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (G__25096){\nvar self__ = this;\nvar G__25096__$1 = this;\nreturn (new cljs.core.RecordIter((0),G__25096__$1,3,new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),new cljs.core.Keyword(null,\"sources\",\"sources\",-321166424),new cljs.core.Keyword(null,\"rules\",\"rules\",1198912366)], null),(cljs.core.truth_(self__.__extmap)?cljs.core._iterator(self__.__extmap):cljs.core.nil_iter())));\n}));\n\n(datascript.query.Context.prototype.cljs$core$IMeta$_meta$arity$1 = (function (this__4437__auto__){\nvar self__ = this;\nvar this__4437__auto____$1 = this;\nreturn self__.__meta;\n}));\n\n(datascript.query.Context.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (this__4434__auto__){\nvar self__ = this;\nvar this__4434__auto____$1 = this;\nreturn (new datascript.query.Context(self__.rels,self__.sources,self__.rules,self__.__meta,self__.__extmap,self__.__hash));\n}));\n\n(datascript.query.Context.prototype.cljs$core$ICounted$_count$arity$1 = (function (this__4443__auto__){\nvar self__ = this;\nvar this__4443__auto____$1 = this;\nreturn (3 + cljs.core.count(self__.__extmap));\n}));\n\n(datascript.query.Context.prototype.cljs$core$IHash$_hash$arity$1 = (function (this__4435__auto__){\nvar self__ = this;\nvar this__4435__auto____$1 = this;\nvar h__4297__auto__ = self__.__hash;\nif((!((h__4297__auto__ == null)))){\nreturn h__4297__auto__;\n} else {\nvar h__4297__auto____$1 = (function (coll__4436__auto__){\nreturn (1014232958 ^ cljs.core.hash_unordered_coll(coll__4436__auto__));\n})(this__4435__auto____$1);\n(self__.__hash = h__4297__auto____$1);\n\nreturn h__4297__auto____$1;\n}\n}));\n\n(datascript.query.Context.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (this25098,other25099){\nvar self__ = this;\nvar this25098__$1 = this;\nreturn (((!((other25099 == null)))) && ((this25098__$1.constructor === other25099.constructor)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this25098__$1.rels,other25099.rels)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this25098__$1.sources,other25099.sources)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this25098__$1.rules,other25099.rules)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this25098__$1.__extmap,other25099.__extmap)));\n}));\n\n(datascript.query.Context.prototype.cljs$core$IMap$_dissoc$arity$2 = (function (this__4448__auto__,k__4449__auto__){\nvar self__ = this;\nvar this__4448__auto____$1 = this;\nif(cljs.core.contains_QMARK_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"sources\",\"sources\",-321166424),null,new cljs.core.Keyword(null,\"rules\",\"rules\",1198912366),null,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),null], null), null),k__4449__auto__)){\nreturn cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(cljs.core._with_meta(cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,this__4448__auto____$1),self__.__meta),k__4449__auto__);\n} else {\nreturn (new datascript.query.Context(self__.rels,self__.sources,self__.rules,self__.__meta,cljs.core.not_empty(cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(self__.__extmap,k__4449__auto__)),null));\n}\n}));\n\n(datascript.query.Context.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (this__4446__auto__,k__4447__auto__,G__25096){\nvar self__ = this;\nvar this__4446__auto____$1 = this;\nvar pred__25107 = cljs.core.keyword_identical_QMARK_;\nvar expr__25108 = k__4447__auto__;\nif(cljs.core.truth_((pred__25107.cljs$core$IFn$_invoke$arity$2 ? pred__25107.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),expr__25108) : pred__25107.call(null,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),expr__25108)))){\nreturn (new datascript.query.Context(G__25096,self__.sources,self__.rules,self__.__meta,self__.__extmap,null));\n} else {\nif(cljs.core.truth_((pred__25107.cljs$core$IFn$_invoke$arity$2 ? pred__25107.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"sources\",\"sources\",-321166424),expr__25108) : pred__25107.call(null,new cljs.core.Keyword(null,\"sources\",\"sources\",-321166424),expr__25108)))){\nreturn (new datascript.query.Context(self__.rels,G__25096,self__.rules,self__.__meta,self__.__extmap,null));\n} else {\nif(cljs.core.truth_((pred__25107.cljs$core$IFn$_invoke$arity$2 ? pred__25107.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"rules\",\"rules\",1198912366),expr__25108) : pred__25107.call(null,new cljs.core.Keyword(null,\"rules\",\"rules\",1198912366),expr__25108)))){\nreturn (new datascript.query.Context(self__.rels,self__.sources,G__25096,self__.__meta,self__.__extmap,null));\n} else {\nreturn (new datascript.query.Context(self__.rels,self__.sources,self__.rules,self__.__meta,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(self__.__extmap,k__4447__auto__,G__25096),null));\n}\n}\n}\n}));\n\n(datascript.query.Context.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this__4451__auto__){\nvar self__ = this;\nvar this__4451__auto____$1 = this;\nreturn cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),self__.rels,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"sources\",\"sources\",-321166424),self__.sources,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"rules\",\"rules\",1198912366),self__.rules,null))], null),self__.__extmap));\n}));\n\n(datascript.query.Context.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (this__4438__auto__,G__25096){\nvar self__ = this;\nvar this__4438__auto____$1 = this;\nreturn (new datascript.query.Context(self__.rels,self__.sources,self__.rules,G__25096,self__.__extmap,self__.__hash));\n}));\n\n(datascript.query.Context.prototype.cljs$core$ICollection$_conj$arity$2 = (function (this__4444__auto__,entry__4445__auto__){\nvar self__ = this;\nvar this__4444__auto____$1 = this;\nif(cljs.core.vector_QMARK_(entry__4445__auto__)){\nreturn this__4444__auto____$1.cljs$core$IAssociative$_assoc$arity$3(null,cljs.core._nth(entry__4445__auto__,(0)),cljs.core._nth(entry__4445__auto__,(1)));\n} else {\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj,this__4444__auto____$1,entry__4445__auto__);\n}\n}));\n\n(datascript.query.Context.getBasis = (function (){\nreturn new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"rels\",\"rels\",-884248584,null),new cljs.core.Symbol(null,\"sources\",\"sources\",1319365103,null),new cljs.core.Symbol(null,\"rules\",\"rules\",-1455523403,null)], null);\n}));\n\n(datascript.query.Context.cljs$lang$type = true);\n\n(datascript.query.Context.cljs$lang$ctorPrSeq = (function (this__4482__auto__){\nreturn (new cljs.core.List(null,\"datascript.query/Context\",null,(1),null));\n}));\n\n(datascript.query.Context.cljs$lang$ctorPrWriter = (function (this__4482__auto__,writer__4483__auto__){\nreturn cljs.core._write(writer__4483__auto__,\"datascript.query/Context\");\n}));\n\n/**\n * Positional factory function for datascript.query/Context.\n */\ndatascript.query.__GT_Context = (function datascript$query$__GT_Context(rels,sources,rules){\nreturn (new datascript.query.Context(rels,sources,rules,null,null,null));\n});\n\n/**\n * Factory function for datascript.query/Context, taking a map of keywords to field values.\n */\ndatascript.query.map__GT_Context = (function datascript$query$map__GT_Context(G__25100){\nvar extmap__4478__auto__ = (function (){var G__25111 = cljs.core.dissoc.cljs$core$IFn$_invoke$arity$variadic(G__25100,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,\"sources\",\"sources\",-321166424),new cljs.core.Keyword(null,\"rules\",\"rules\",1198912366)], 0));\nif(cljs.core.record_QMARK_(G__25100)){\nreturn cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,G__25111);\n} else {\nreturn G__25111;\n}\n})();\nreturn (new datascript.query.Context(new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185).cljs$core$IFn$_invoke$arity$1(G__25100),new cljs.core.Keyword(null,\"sources\",\"sources\",-321166424).cljs$core$IFn$_invoke$arity$1(G__25100),new cljs.core.Keyword(null,\"rules\",\"rules\",1198912366).cljs$core$IFn$_invoke$arity$1(G__25100),null,cljs.core.not_empty(extmap__4478__auto__),null));\n});\n\n\n/**\n* @constructor\n * @implements {cljs.core.IRecord}\n * @implements {cljs.core.IKVReduce}\n * @implements {cljs.core.IEquiv}\n * @implements {cljs.core.IHash}\n * @implements {cljs.core.ICollection}\n * @implements {cljs.core.ICounted}\n * @implements {cljs.core.ISeqable}\n * @implements {cljs.core.IMeta}\n * @implements {cljs.core.ICloneable}\n * @implements {cljs.core.IPrintWithWriter}\n * @implements {cljs.core.IIterable}\n * @implements {cljs.core.IWithMeta}\n * @implements {cljs.core.IAssociative}\n * @implements {cljs.core.IMap}\n * @implements {cljs.core.ILookup}\n*/\ndatascript.query.Relation = (function (attrs,tuples,__meta,__extmap,__hash){\nthis.attrs = attrs;\nthis.tuples = tuples;\nthis.__meta = __meta;\nthis.__extmap = __extmap;\nthis.__hash = __hash;\nthis.cljs$lang$protocol_mask$partition0$ = 2230716170;\nthis.cljs$lang$protocol_mask$partition1$ = 139264;\n});\n(datascript.query.Relation.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (this__4439__auto__,k__4440__auto__){\nvar self__ = this;\nvar this__4439__auto____$1 = this;\nreturn this__4439__auto____$1.cljs$core$ILookup$_lookup$arity$3(null,k__4440__auto__,null);\n}));\n\n(datascript.query.Relation.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (this__4441__auto__,k25113,else__4442__auto__){\nvar self__ = this;\nvar this__4441__auto____$1 = this;\nvar G__25117 = k25113;\nvar G__25117__$1 = (((G__25117 instanceof cljs.core.Keyword))?G__25117.fqn:null);\nswitch (G__25117__$1) {\ncase \"attrs\":\nreturn self__.attrs;\n\nbreak;\ncase \"tuples\":\nreturn self__.tuples;\n\nbreak;\ndefault:\nreturn cljs.core.get.cljs$core$IFn$_invoke$arity$3(self__.__extmap,k25113,else__4442__auto__);\n\n}\n}));\n\n(datascript.query.Relation.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (this__4458__auto__,f__4459__auto__,init__4460__auto__){\nvar self__ = this;\nvar this__4458__auto____$1 = this;\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (ret__4461__auto__,p__25118){\nvar vec__25119 = p__25118;\nvar k__4462__auto__ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25119,(0),null);\nvar v__4463__auto__ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25119,(1),null);\nreturn (f__4459__auto__.cljs$core$IFn$_invoke$arity$3 ? f__4459__auto__.cljs$core$IFn$_invoke$arity$3(ret__4461__auto__,k__4462__auto__,v__4463__auto__) : f__4459__auto__.call(null,ret__4461__auto__,k__4462__auto__,v__4463__auto__));\n}),init__4460__auto__,this__4458__auto____$1);\n}));\n\n(datascript.query.Relation.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (this__4453__auto__,writer__4454__auto__,opts__4455__auto__){\nvar self__ = this;\nvar this__4453__auto____$1 = this;\nvar pr_pair__4456__auto__ = (function (keyval__4457__auto__){\nreturn cljs.core.pr_sequential_writer(writer__4454__auto__,cljs.core.pr_writer,\"\",\" \",\"\",opts__4455__auto__,keyval__4457__auto__);\n});\nreturn cljs.core.pr_sequential_writer(writer__4454__auto__,pr_pair__4456__auto__,\"#datascript.query.Relation{\",\", \",\"}\",opts__4455__auto__,cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713),self__.attrs],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639),self__.tuples],null))], null),self__.__extmap));\n}));\n\n(datascript.query.Relation.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (G__25112){\nvar self__ = this;\nvar G__25112__$1 = this;\nreturn (new cljs.core.RecordIter((0),G__25112__$1,2,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713),new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639)], null),(cljs.core.truth_(self__.__extmap)?cljs.core._iterator(self__.__extmap):cljs.core.nil_iter())));\n}));\n\n(datascript.query.Relation.prototype.cljs$core$IMeta$_meta$arity$1 = (function (this__4437__auto__){\nvar self__ = this;\nvar this__4437__auto____$1 = this;\nreturn self__.__meta;\n}));\n\n(datascript.query.Relation.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (this__4434__auto__){\nvar self__ = this;\nvar this__4434__auto____$1 = this;\nreturn (new datascript.query.Relation(self__.attrs,self__.tuples,self__.__meta,self__.__extmap,self__.__hash));\n}));\n\n(datascript.query.Relation.prototype.cljs$core$ICounted$_count$arity$1 = (function (this__4443__auto__){\nvar self__ = this;\nvar this__4443__auto____$1 = this;\nreturn (2 + cljs.core.count(self__.__extmap));\n}));\n\n(datascript.query.Relation.prototype.cljs$core$IHash$_hash$arity$1 = (function (this__4435__auto__){\nvar self__ = this;\nvar this__4435__auto____$1 = this;\nvar h__4297__auto__ = self__.__hash;\nif((!((h__4297__auto__ == null)))){\nreturn h__4297__auto__;\n} else {\nvar h__4297__auto____$1 = (function (coll__4436__auto__){\nreturn (1107093117 ^ cljs.core.hash_unordered_coll(coll__4436__auto__));\n})(this__4435__auto____$1);\n(self__.__hash = h__4297__auto____$1);\n\nreturn h__4297__auto____$1;\n}\n}));\n\n(datascript.query.Relation.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (this25114,other25115){\nvar self__ = this;\nvar this25114__$1 = this;\nreturn (((!((other25115 == null)))) && ((this25114__$1.constructor === other25115.constructor)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this25114__$1.attrs,other25115.attrs)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this25114__$1.tuples,other25115.tuples)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this25114__$1.__extmap,other25115.__extmap)));\n}));\n\n(datascript.query.Relation.prototype.cljs$core$IMap$_dissoc$arity$2 = (function (this__4448__auto__,k__4449__auto__){\nvar self__ = this;\nvar this__4448__auto____$1 = this;\nif(cljs.core.contains_QMARK_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639),null,new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713),null], null), null),k__4449__auto__)){\nreturn cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(cljs.core._with_meta(cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,this__4448__auto____$1),self__.__meta),k__4449__auto__);\n} else {\nreturn (new datascript.query.Relation(self__.attrs,self__.tuples,self__.__meta,cljs.core.not_empty(cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(self__.__extmap,k__4449__auto__)),null));\n}\n}));\n\n(datascript.query.Relation.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (this__4446__auto__,k__4447__auto__,G__25112){\nvar self__ = this;\nvar this__4446__auto____$1 = this;\nvar pred__25123 = cljs.core.keyword_identical_QMARK_;\nvar expr__25124 = k__4447__auto__;\nif(cljs.core.truth_((pred__25123.cljs$core$IFn$_invoke$arity$2 ? pred__25123.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713),expr__25124) : pred__25123.call(null,new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713),expr__25124)))){\nreturn (new datascript.query.Relation(G__25112,self__.tuples,self__.__meta,self__.__extmap,null));\n} else {\nif(cljs.core.truth_((pred__25123.cljs$core$IFn$_invoke$arity$2 ? pred__25123.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639),expr__25124) : pred__25123.call(null,new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639),expr__25124)))){\nreturn (new datascript.query.Relation(self__.attrs,G__25112,self__.__meta,self__.__extmap,null));\n} else {\nreturn (new datascript.query.Relation(self__.attrs,self__.tuples,self__.__meta,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(self__.__extmap,k__4447__auto__,G__25112),null));\n}\n}\n}));\n\n(datascript.query.Relation.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this__4451__auto__){\nvar self__ = this;\nvar this__4451__auto____$1 = this;\nreturn cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713),self__.attrs,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639),self__.tuples,null))], null),self__.__extmap));\n}));\n\n(datascript.query.Relation.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (this__4438__auto__,G__25112){\nvar self__ = this;\nvar this__4438__auto____$1 = this;\nreturn (new datascript.query.Relation(self__.attrs,self__.tuples,G__25112,self__.__extmap,self__.__hash));\n}));\n\n(datascript.query.Relation.prototype.cljs$core$ICollection$_conj$arity$2 = (function (this__4444__auto__,entry__4445__auto__){\nvar self__ = this;\nvar this__4444__auto____$1 = this;\nif(cljs.core.vector_QMARK_(entry__4445__auto__)){\nreturn this__4444__auto____$1.cljs$core$IAssociative$_assoc$arity$3(null,cljs.core._nth(entry__4445__auto__,(0)),cljs.core._nth(entry__4445__auto__,(1)));\n} else {\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj,this__4444__auto____$1,entry__4445__auto__);\n}\n}));\n\n(datascript.query.Relation.getBasis = (function (){\nreturn new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"attrs\",\"attrs\",-450137186,null),new cljs.core.Symbol(null,\"tuples\",\"tuples\",964498888,null)], null);\n}));\n\n(datascript.query.Relation.cljs$lang$type = true);\n\n(datascript.query.Relation.cljs$lang$ctorPrSeq = (function (this__4482__auto__){\nreturn (new cljs.core.List(null,\"datascript.query/Relation\",null,(1),null));\n}));\n\n(datascript.query.Relation.cljs$lang$ctorPrWriter = (function (this__4482__auto__,writer__4483__auto__){\nreturn cljs.core._write(writer__4483__auto__,\"datascript.query/Relation\");\n}));\n\n/**\n * Positional factory function for datascript.query/Relation.\n */\ndatascript.query.__GT_Relation = (function datascript$query$__GT_Relation(attrs,tuples){\nreturn (new datascript.query.Relation(attrs,tuples,null,null,null));\n});\n\n/**\n * Factory function for datascript.query/Relation, taking a map of keywords to field values.\n */\ndatascript.query.map__GT_Relation = (function datascript$query$map__GT_Relation(G__25116){\nvar extmap__4478__auto__ = (function (){var G__25126 = cljs.core.dissoc.cljs$core$IFn$_invoke$arity$variadic(G__25116,new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639)], 0));\nif(cljs.core.record_QMARK_(G__25116)){\nreturn cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,G__25126);\n} else {\nreturn G__25126;\n}\n})();\nreturn (new datascript.query.Relation(new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(G__25116),new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639).cljs$core$IFn$_invoke$arity$1(G__25116),null,cljs.core.not_empty(extmap__4478__auto__),null));\n});\n\ndatascript.query.single = (function datascript$query$single(coll){\n\nreturn cljs.core.first(coll);\n});\ndatascript.query.intersect_keys = (function datascript$query$intersect_keys(attrs1,attrs2){\nreturn clojure.set.intersection.cljs$core$IFn$_invoke$arity$2(cljs.core.set(cljs.core.keys(attrs1)),cljs.core.set(cljs.core.keys(attrs2)));\n});\ndatascript.query.concatv = (function datascript$query$concatv(var_args){\nvar args__4795__auto__ = [];\nvar len__4789__auto___25503 = arguments.length;\nvar i__4790__auto___25504 = (0);\nwhile(true){\nif((i__4790__auto___25504 < len__4789__auto___25503)){\nargs__4795__auto__.push((arguments[i__4790__auto___25504]));\n\nvar G__25505 = (i__4790__auto___25504 + (1));\ni__4790__auto___25504 = G__25505;\ncontinue;\n} else {\n}\nbreak;\n}\n\nvar argseq__4796__auto__ = ((((0) < args__4795__auto__.length))?(new cljs.core.IndexedSeq(args__4795__auto__.slice((0)),(0),null)):null);\nreturn datascript.query.concatv.cljs$core$IFn$_invoke$arity$variadic(argseq__4796__auto__);\n});\n\n(datascript.query.concatv.cljs$core$IFn$_invoke$arity$variadic = (function (xs){\nreturn cljs.core.into.cljs$core$IFn$_invoke$arity$3(cljs.core.PersistentVector.EMPTY,cljs.core.cat,xs);\n}));\n\n(datascript.query.concatv.cljs$lang$maxFixedArity = (0));\n\n/** @this {Function} */\n(datascript.query.concatv.cljs$lang$applyTo = (function (seq25128){\nvar self__4777__auto__ = this;\nreturn self__4777__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq25128));\n}));\n\ndatascript.query.zip = (function datascript$query$zip(var_args){\nvar G__25133 = arguments.length;\nswitch (G__25133) {\ncase 2:\nreturn datascript.query.zip.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));\n\nbreak;\ndefault:\nvar args_arr__4810__auto__ = [];\nvar len__4789__auto___25508 = arguments.length;\nvar i__4790__auto___25509 = (0);\nwhile(true){\nif((i__4790__auto___25509 < len__4789__auto___25508)){\nargs_arr__4810__auto__.push((arguments[i__4790__auto___25509]));\n\nvar G__25510 = (i__4790__auto___25509 + (1));\ni__4790__auto___25509 = G__25510;\ncontinue;\n} else {\n}\nbreak;\n}\n\nvar argseq__4811__auto__ = (new cljs.core.IndexedSeq(args_arr__4810__auto__.slice((2)),(0),null));\nreturn datascript.query.zip.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__4811__auto__);\n\n}\n});\n\n(datascript.query.zip.cljs$core$IFn$_invoke$arity$2 = (function (a,b){\nreturn cljs.core.mapv.cljs$core$IFn$_invoke$arity$3(cljs.core.vector,a,b);\n}));\n\n(datascript.query.zip.cljs$core$IFn$_invoke$arity$variadic = (function (a,b,rest){\nreturn cljs.core.apply.cljs$core$IFn$_invoke$arity$5(cljs.core.mapv,cljs.core.vector,a,b,rest);\n}));\n\n/** @this {Function} */\n(datascript.query.zip.cljs$lang$applyTo = (function (seq25130){\nvar G__25131 = cljs.core.first(seq25130);\nvar seq25130__$1 = cljs.core.next(seq25130);\nvar G__25132 = cljs.core.first(seq25130__$1);\nvar seq25130__$2 = cljs.core.next(seq25130__$1);\nvar self__4776__auto__ = this;\nreturn self__4776__auto__.cljs$core$IFn$_invoke$arity$variadic(G__25131,G__25132,seq25130__$2);\n}));\n\n(datascript.query.zip.cljs$lang$maxFixedArity = (2));\n\ndatascript.query.same_keys_QMARK_ = (function datascript$query$same_keys_QMARK_(a,b){\nreturn ((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.count(a),cljs.core.count(b))) && (cljs.core.every_QMARK_((function (p1__25134_SHARP_){\nreturn cljs.core.contains_QMARK_(b,p1__25134_SHARP_);\n}),cljs.core.keys(a))) && (cljs.core.every_QMARK_((function (p1__25135_SHARP_){\nreturn cljs.core.contains_QMARK_(b,p1__25135_SHARP_);\n}),cljs.core.keys(a))));\n});\ndatascript.query.looks_like_QMARK_ = (function datascript$query$looks_like_QMARK_(pattern,form){\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Symbol(null,\"_\",\"_\",-1201019570,null),pattern)){\nreturn true;\n} else {\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"*\",\"*\",345799209,null)], null),pattern)){\nreturn cljs.core.sequential_QMARK_(form);\n} else {\nif((pattern instanceof cljs.core.Symbol)){\nreturn cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(form,pattern);\n} else {\nif(cljs.core.sequential_QMARK_(pattern)){\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.last(pattern),new cljs.core.Symbol(null,\"*\",\"*\",345799209,null))){\nreturn ((cljs.core.sequential_QMARK_(form)) && (cljs.core.every_QMARK_((function (p__25141){\nvar vec__25142 = p__25141;\nvar pattern_el = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25142,(0),null);\nvar form_el = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25142,(1),null);\nreturn (datascript.query.looks_like_QMARK_.cljs$core$IFn$_invoke$arity$2 ? datascript.query.looks_like_QMARK_.cljs$core$IFn$_invoke$arity$2(pattern_el,form_el) : datascript.query.looks_like_QMARK_.call(null,pattern_el,form_el));\n}),cljs.core.map.cljs$core$IFn$_invoke$arity$3(cljs.core.vector,cljs.core.butlast(pattern),form))));\n} else {\nreturn ((cljs.core.sequential_QMARK_(form)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.count(form),cljs.core.count(pattern))) && (cljs.core.every_QMARK_((function (p__25149){\nvar vec__25150 = p__25149;\nvar pattern_el = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25150,(0),null);\nvar form_el = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25150,(1),null);\nreturn (datascript.query.looks_like_QMARK_.cljs$core$IFn$_invoke$arity$2 ? datascript.query.looks_like_QMARK_.cljs$core$IFn$_invoke$arity$2(pattern_el,form_el) : datascript.query.looks_like_QMARK_.call(null,pattern_el,form_el));\n}),cljs.core.map.cljs$core$IFn$_invoke$arity$3(cljs.core.vector,pattern,form))));\n}\n} else {\nreturn (pattern.cljs$core$IFn$_invoke$arity$1 ? pattern.cljs$core$IFn$_invoke$arity$1(form) : pattern.call(null,form));\n\n}\n}\n}\n}\n});\ndatascript.query.source_QMARK_ = (function datascript$query$source_QMARK_(sym){\nreturn (((sym instanceof cljs.core.Symbol)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(\"$\",cljs.core.first(cljs.core.name(sym)))));\n});\ndatascript.query.free_var_QMARK_ = (function datascript$query$free_var_QMARK_(sym){\nreturn (((sym instanceof cljs.core.Symbol)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(\"?\",cljs.core.first(cljs.core.name(sym)))));\n});\ndatascript.query.attr_QMARK_ = (function datascript$query$attr_QMARK_(form){\nreturn (((form instanceof cljs.core.Keyword)) || (typeof form === 'string'));\n});\ndatascript.query.lookup_ref_QMARK_ = (function datascript$query$lookup_ref_QMARK_(form){\nreturn datascript.query.looks_like_QMARK_(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [datascript.query.attr_QMARK_,new cljs.core.Symbol(null,\"_\",\"_\",-1201019570,null)], null),form);\n});\ndatascript.query.join_tuples = (function datascript$query$join_tuples(t1,idxs1,t2,idxs2){\nvar l1 = idxs1.length;\nvar l2 = idxs2.length;\nvar res = me.tonsky.persistent_sorted_set.arrays.make_array((l1 + l2));\nvar n__4666__auto___25521 = l1;\nvar i_25522 = (0);\nwhile(true){\nif((i_25522 < n__4666__auto___25521)){\n(res[i_25522] = (t1[(idxs1[i_25522])]));\n\nvar G__25523 = (i_25522 + (1));\ni_25522 = G__25523;\ncontinue;\n} else {\n}\nbreak;\n}\n\nvar n__4666__auto___25528 = l2;\nvar i_25529 = (0);\nwhile(true){\nif((i_25529 < n__4666__auto___25528)){\n(res[(l1 + i_25529)] = (t2[(idxs2[i_25529])]));\n\nvar G__25531 = (i_25529 + (1));\ni_25529 = G__25531;\ncontinue;\n} else {\n}\nbreak;\n}\n\nreturn res;\n});\ndatascript.query.sum_rel = (function datascript$query$sum_rel(a,b){\nvar map__25154 = a;\nvar map__25154__$1 = (((((!((map__25154 == null))))?(((((map__25154.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__25154.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__25154):map__25154);\nvar attrs_a = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__25154__$1,new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713));\nvar tuples_a = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__25154__$1,new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639));\nvar map__25155 = b;\nvar map__25155__$1 = (((((!((map__25155 == null))))?(((((map__25155.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__25155.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__25155):map__25155);\nvar attrs_b = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__25155__$1,new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713));\nvar tuples_b = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__25155__$1,new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639));\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(attrs_a,attrs_b)){\nreturn (new datascript.query.Relation(attrs_a,cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.vec(tuples_a),tuples_b),null,null,null));\n} else {\nif((!(datascript.query.same_keys_QMARK_(attrs_a,attrs_b)))){\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Can\\u2019t sum relations with different attrs: \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([attrs_a], 0)),\" and \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([attrs_b], 0))].join(''),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"query\",\"where\",\"query/where\",-1935159429)], null));\n} else {\nif(cljs.core.every_QMARK_(cljs.core.number_QMARK_,cljs.core.vals(attrs_a))){\nvar idxb__GT_idxa = cljs.core.vec((function (){var iter__4582__auto__ = (function datascript$query$sum_rel_$_iter__25158(s__25159){\nreturn (new cljs.core.LazySeq(null,(function (){\nvar s__25159__$1 = s__25159;\nwhile(true){\nvar temp__5735__auto__ = cljs.core.seq(s__25159__$1);\nif(temp__5735__auto__){\nvar s__25159__$2 = temp__5735__auto__;\nif(cljs.core.chunked_seq_QMARK_(s__25159__$2)){\nvar c__4580__auto__ = cljs.core.chunk_first(s__25159__$2);\nvar size__4581__auto__ = cljs.core.count(c__4580__auto__);\nvar b__25161 = cljs.core.chunk_buffer(size__4581__auto__);\nif((function (){var i__25160 = (0);\nwhile(true){\nif((i__25160 < size__4581__auto__)){\nvar vec__25162 = cljs.core._nth(c__4580__auto__,i__25160);\nvar sym = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25162,(0),null);\nvar idx_b = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25162,(1),null);\ncljs.core.chunk_append(b__25161,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [idx_b,(attrs_a.cljs$core$IFn$_invoke$arity$1 ? attrs_a.cljs$core$IFn$_invoke$arity$1(sym) : attrs_a.call(null,sym))], null));\n\nvar G__25548 = (i__25160 + (1));\ni__25160 = G__25548;\ncontinue;\n} else {\nreturn true;\n}\nbreak;\n}\n})()){\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25161),datascript$query$sum_rel_$_iter__25158(cljs.core.chunk_rest(s__25159__$2)));\n} else {\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25161),null);\n}\n} else {\nvar vec__25166 = cljs.core.first(s__25159__$2);\nvar sym = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25166,(0),null);\nvar idx_b = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25166,(1),null);\nreturn cljs.core.cons(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [idx_b,(attrs_a.cljs$core$IFn$_invoke$arity$1 ? attrs_a.cljs$core$IFn$_invoke$arity$1(sym) : attrs_a.call(null,sym))], null),datascript$query$sum_rel_$_iter__25158(cljs.core.rest(s__25159__$2)));\n}\n} else {\nreturn null;\n}\nbreak;\n}\n}),null,null));\n});\nreturn iter__4582__auto__(attrs_b);\n})());\nvar tlen = (cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(cljs.core.max,cljs.core.vals(attrs_a)) + (1));\nvar tuples_SINGLEQUOTE_ = cljs.core.persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (acc,tuple_b){\nvar tuple_SINGLEQUOTE_ = me.tonsky.persistent_sorted_set.arrays.make_array(tlen);\nvar seq__25169_25553 = cljs.core.seq(idxb__GT_idxa);\nvar chunk__25170_25554 = null;\nvar count__25171_25555 = (0);\nvar i__25172_25556 = (0);\nwhile(true){\nif((i__25172_25556 < count__25171_25555)){\nvar vec__25179_25557 = chunk__25170_25554.cljs$core$IIndexed$_nth$arity$2(null,i__25172_25556);\nvar idx_b_25558 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25179_25557,(0),null);\nvar idx_a_25559 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25179_25557,(1),null);\n(tuple_SINGLEQUOTE_[idx_a_25559] = (tuple_b[idx_b_25558]));\n\n\nvar G__25563 = seq__25169_25553;\nvar G__25564 = chunk__25170_25554;\nvar G__25565 = count__25171_25555;\nvar G__25566 = (i__25172_25556 + (1));\nseq__25169_25553 = G__25563;\nchunk__25170_25554 = G__25564;\ncount__25171_25555 = G__25565;\ni__25172_25556 = G__25566;\ncontinue;\n} else {\nvar temp__5735__auto___25567 = cljs.core.seq(seq__25169_25553);\nif(temp__5735__auto___25567){\nvar seq__25169_25568__$1 = temp__5735__auto___25567;\nif(cljs.core.chunked_seq_QMARK_(seq__25169_25568__$1)){\nvar c__4609__auto___25570 = cljs.core.chunk_first(seq__25169_25568__$1);\nvar G__25571 = cljs.core.chunk_rest(seq__25169_25568__$1);\nvar G__25572 = c__4609__auto___25570;\nvar G__25573 = cljs.core.count(c__4609__auto___25570);\nvar G__25574 = (0);\nseq__25169_25553 = G__25571;\nchunk__25170_25554 = G__25572;\ncount__25171_25555 = G__25573;\ni__25172_25556 = G__25574;\ncontinue;\n} else {\nvar vec__25182_25575 = cljs.core.first(seq__25169_25568__$1);\nvar idx_b_25576 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25182_25575,(0),null);\nvar idx_a_25577 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25182_25575,(1),null);\n(tuple_SINGLEQUOTE_[idx_a_25577] = (tuple_b[idx_b_25576]));\n\n\nvar G__25579 = cljs.core.next(seq__25169_25568__$1);\nvar G__25580 = null;\nvar G__25581 = (0);\nvar G__25582 = (0);\nseq__25169_25553 = G__25579;\nchunk__25170_25554 = G__25580;\ncount__25171_25555 = G__25581;\ni__25172_25556 = G__25582;\ncontinue;\n}\n} else {\n}\n}\nbreak;\n}\n\nreturn cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(acc,tuple_SINGLEQUOTE_);\n}),cljs.core.transient$(cljs.core.vec(tuples_a)),tuples_b));\nreturn (new datascript.query.Relation(attrs_a,tuples_SINGLEQUOTE_,null,null,null));\n} else {\nvar all_attrs = cljs.core.zipmap(cljs.core.keys(cljs.core.merge.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([attrs_a,attrs_b], 0))),cljs.core.range.cljs$core$IFn$_invoke$arity$0());\nvar G__25185 = (function (){var G__25187 = (new datascript.query.Relation(all_attrs,cljs.core.PersistentVector.EMPTY,null,null,null));\nvar G__25188 = a;\nreturn (datascript.query.sum_rel.cljs$core$IFn$_invoke$arity$2 ? datascript.query.sum_rel.cljs$core$IFn$_invoke$arity$2(G__25187,G__25188) : datascript.query.sum_rel.call(null,G__25187,G__25188));\n})();\nvar G__25186 = b;\nreturn (datascript.query.sum_rel.cljs$core$IFn$_invoke$arity$2 ? datascript.query.sum_rel.cljs$core$IFn$_invoke$arity$2(G__25185,G__25186) : datascript.query.sum_rel.call(null,G__25185,G__25186));\n\n}\n}\n}\n});\ndatascript.query.prod_rel = (function datascript$query$prod_rel(var_args){\nvar G__25190 = arguments.length;\nswitch (G__25190) {\ncase 0:\nreturn datascript.query.prod_rel.cljs$core$IFn$_invoke$arity$0();\n\nbreak;\ncase 2:\nreturn datascript.query.prod_rel.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(datascript.query.prod_rel.cljs$core$IFn$_invoke$arity$0 = (function (){\nreturn (new datascript.query.Relation(cljs.core.PersistentArrayMap.EMPTY,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [me.tonsky.persistent_sorted_set.arrays.make_array((0))], null),null,null,null));\n}));\n\n(datascript.query.prod_rel.cljs$core$IFn$_invoke$arity$2 = (function (rel1,rel2){\nvar attrs1 = cljs.core.keys(new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(rel1));\nvar attrs2 = cljs.core.keys(new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(rel2));\nvar idxs1 = cljs.core.to_array(cljs.core.map.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(rel1),attrs1));\nvar idxs2 = cljs.core.to_array(cljs.core.map.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(rel2),attrs2));\nreturn (new datascript.query.Relation(cljs.core.zipmap(cljs.core.concat.cljs$core$IFn$_invoke$arity$2(attrs1,attrs2),cljs.core.range.cljs$core$IFn$_invoke$arity$0()),cljs.core.persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (acc,t1){\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (acc__$1,t2){\nreturn cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(acc__$1,datascript.query.join_tuples(t1,idxs1,t2,idxs2));\n}),acc,new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639).cljs$core$IFn$_invoke$arity$1(rel2));\n}),cljs.core.transient$(cljs.core.PersistentVector.EMPTY),new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639).cljs$core$IFn$_invoke$arity$1(rel1))),null,null,null));\n}));\n\n(datascript.query.prod_rel.cljs$lang$maxFixedArity = 2);\n\ndatascript.query._differ_QMARK_ = (function datascript$query$_differ_QMARK_(var_args){\nvar args__4795__auto__ = [];\nvar len__4789__auto___25594 = arguments.length;\nvar i__4790__auto___25595 = (0);\nwhile(true){\nif((i__4790__auto___25595 < len__4789__auto___25594)){\nargs__4795__auto__.push((arguments[i__4790__auto___25595]));\n\nvar G__25596 = (i__4790__auto___25595 + (1));\ni__4790__auto___25595 = G__25596;\ncontinue;\n} else {\n}\nbreak;\n}\n\nvar argseq__4796__auto__ = ((((0) < args__4795__auto__.length))?(new cljs.core.IndexedSeq(args__4795__auto__.slice((0)),(0),null)):null);\nreturn datascript.query._differ_QMARK_.cljs$core$IFn$_invoke$arity$variadic(argseq__4796__auto__);\n});\n\n(datascript.query._differ_QMARK_.cljs$core$IFn$_invoke$arity$variadic = (function (xs){\nvar l = cljs.core.count(xs);\nreturn cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.take.cljs$core$IFn$_invoke$arity$2((l / (2)),xs),cljs.core.drop.cljs$core$IFn$_invoke$arity$2((l / (2)),xs));\n}));\n\n(datascript.query._differ_QMARK_.cljs$lang$maxFixedArity = (0));\n\n/** @this {Function} */\n(datascript.query._differ_QMARK_.cljs$lang$applyTo = (function (seq25192){\nvar self__4777__auto__ = this;\nreturn self__4777__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq25192));\n}));\n\ndatascript.query._get_else = (function datascript$query$_get_else(db,e,a,else_val){\nif((else_val == null)){\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(\"get-else: nil default value is not supported\",new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"query\",\"where\",\"query/where\",-1935159429)], null));\n} else {\n}\n\nvar temp__5737__auto__ = cljs.core.first(datascript.db._search(db,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [e,a], null)));\nif((temp__5737__auto__ == null)){\nreturn else_val;\n} else {\nvar datom = temp__5737__auto__;\nreturn new cljs.core.Keyword(null,\"v\",\"v\",21465059).cljs$core$IFn$_invoke$arity$1(datom);\n}\n});\ndatascript.query._get_some = (function datascript$query$_get_some(var_args){\nvar args__4795__auto__ = [];\nvar len__4789__auto___25609 = arguments.length;\nvar i__4790__auto___25610 = (0);\nwhile(true){\nif((i__4790__auto___25610 < len__4789__auto___25609)){\nargs__4795__auto__.push((arguments[i__4790__auto___25610]));\n\nvar G__25611 = (i__4790__auto___25610 + (1));\ni__4790__auto___25610 = G__25611;\ncontinue;\n} else {\n}\nbreak;\n}\n\nvar argseq__4796__auto__ = ((((2) < args__4795__auto__.length))?(new cljs.core.IndexedSeq(args__4795__auto__.slice((2)),(0),null)):null);\nreturn datascript.query._get_some.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__4796__auto__);\n});\n\n(datascript.query._get_some.cljs$core$IFn$_invoke$arity$variadic = (function (db,e,as){\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (_,a){\nvar temp__5739__auto__ = cljs.core.first(datascript.db._search(db,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [e,a], null)));\nif((temp__5739__auto__ == null)){\nreturn null;\n} else {\nvar datom = temp__5739__auto__;\nreturn cljs.core.reduced(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"a\",\"a\",-2123407586).cljs$core$IFn$_invoke$arity$1(datom),new cljs.core.Keyword(null,\"v\",\"v\",21465059).cljs$core$IFn$_invoke$arity$1(datom)], null));\n}\n}),null,as);\n}));\n\n(datascript.query._get_some.cljs$lang$maxFixedArity = (2));\n\n/** @this {Function} */\n(datascript.query._get_some.cljs$lang$applyTo = (function (seq25193){\nvar G__25194 = cljs.core.first(seq25193);\nvar seq25193__$1 = cljs.core.next(seq25193);\nvar G__25195 = cljs.core.first(seq25193__$1);\nvar seq25193__$2 = cljs.core.next(seq25193__$1);\nvar self__4776__auto__ = this;\nreturn self__4776__auto__.cljs$core$IFn$_invoke$arity$variadic(G__25194,G__25195,seq25193__$2);\n}));\n\ndatascript.query._missing_QMARK_ = (function datascript$query$_missing_QMARK_(db,e,a){\nreturn (cljs.core.get.cljs$core$IFn$_invoke$arity$2(datascript.impl.entity.entity(db,e),a) == null);\n});\ndatascript.query.and_fn = (function datascript$query$and_fn(var_args){\nvar args__4795__auto__ = [];\nvar len__4789__auto___25616 = arguments.length;\nvar i__4790__auto___25617 = (0);\nwhile(true){\nif((i__4790__auto___25617 < len__4789__auto___25616)){\nargs__4795__auto__.push((arguments[i__4790__auto___25617]));\n\nvar G__25618 = (i__4790__auto___25617 + (1));\ni__4790__auto___25617 = G__25618;\ncontinue;\n} else {\n}\nbreak;\n}\n\nvar argseq__4796__auto__ = ((((0) < args__4795__auto__.length))?(new cljs.core.IndexedSeq(args__4795__auto__.slice((0)),(0),null)):null);\nreturn datascript.query.and_fn.cljs$core$IFn$_invoke$arity$variadic(argseq__4796__auto__);\n});\n\n(datascript.query.and_fn.cljs$core$IFn$_invoke$arity$variadic = (function (args){\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (a,b){\nif(cljs.core.truth_(b)){\nreturn b;\n} else {\nreturn cljs.core.reduced(b);\n}\n}),true,args);\n}));\n\n(datascript.query.and_fn.cljs$lang$maxFixedArity = (0));\n\n/** @this {Function} */\n(datascript.query.and_fn.cljs$lang$applyTo = (function (seq25196){\nvar self__4777__auto__ = this;\nreturn self__4777__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq25196));\n}));\n\ndatascript.query.or_fn = (function datascript$query$or_fn(var_args){\nvar args__4795__auto__ = [];\nvar len__4789__auto___25622 = arguments.length;\nvar i__4790__auto___25623 = (0);\nwhile(true){\nif((i__4790__auto___25623 < len__4789__auto___25622)){\nargs__4795__auto__.push((arguments[i__4790__auto___25623]));\n\nvar G__25627 = (i__4790__auto___25623 + (1));\ni__4790__auto___25623 = G__25627;\ncontinue;\n} else {\n}\nbreak;\n}\n\nvar argseq__4796__auto__ = ((((0) < args__4795__auto__.length))?(new cljs.core.IndexedSeq(args__4795__auto__.slice((0)),(0),null)):null);\nreturn datascript.query.or_fn.cljs$core$IFn$_invoke$arity$variadic(argseq__4796__auto__);\n});\n\n(datascript.query.or_fn.cljs$core$IFn$_invoke$arity$variadic = (function (args){\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (a,b){\nif(cljs.core.truth_(b)){\nreturn cljs.core.reduced(b);\n} else {\nreturn b;\n}\n}),null,args);\n}));\n\n(datascript.query.or_fn.cljs$lang$maxFixedArity = (0));\n\n/** @this {Function} */\n(datascript.query.or_fn.cljs$lang$applyTo = (function (seq25198){\nvar self__4777__auto__ = this;\nreturn self__4777__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq25198));\n}));\n\ndatascript.query.built_ins = cljs.core.PersistentHashMap.fromArrays([new cljs.core.Symbol(null,\"true?\",\"true?\",-1600332395,null),new cljs.core.Symbol(null,\"and\",\"and\",668631710,null),new cljs.core.Symbol(null,\"odd?\",\"odd?\",-1458588199,null),new cljs.core.Symbol(null,\"get-else\",\"get-else\",1312024065,null),new cljs.core.Symbol(null,\">=\",\">=\",1016916022,null),new cljs.core.Symbol(null,\"print-str\",\"print-str\",-699700354,null),new cljs.core.Symbol(null,\">\",\">\",1085014381,null),new cljs.core.Symbol(null,\"count\",\"count\",-514511684,null),new cljs.core.Symbol(null,\"get-some\",\"get-some\",409442058,null),new cljs.core.Symbol(null,\"nil?\",\"nil?\",1612038930,null),new cljs.core.Symbol(null,\"inc\",\"inc\",324505433,null),new cljs.core.Symbol(null,\"/\",\"/\",-1371932971,null),new cljs.core.Symbol(null,\"quot\",\"quot\",-1125214196,null),new cljs.core.Symbol(null,\"false?\",\"false?\",-1522377573,null),new cljs.core.Symbol(null,\"not\",\"not\",1044554643,null),new cljs.core.Symbol(null,\"identity\",\"identity\",-1007039734,null),new cljs.core.Symbol(null,\"-differ?\",\"-differ?\",1465687357,null),new cljs.core.Symbol(null,\"re-seq\",\"re-seq\",-2105554076,null),new cljs.core.Symbol(null,\"<=\",\"<=\",1244895369,null),new cljs.core.Symbol(\"clojure.string\",\"starts-with?\",\"clojure.string/starts-with?\",656256322,null),new cljs.core.Symbol(null,\"=\",\"=\",-1501502141,null),new cljs.core.Symbol(null,\"min\",\"min\",2085523049,null),new cljs.core.Symbol(null,\"+\",\"+\",-740910886,null),new cljs.core.Symbol(null,\"name\",\"name\",-810760592,null),new cljs.core.Symbol(null,\"missing?\",\"missing?\",-1710383910,null),new cljs.core.Symbol(null,\"ground\",\"ground\",-1460862835,null),new cljs.core.Symbol(null,\"rand-int\",\"rand-int\",-495012157,null),new cljs.core.Symbol(null,\"complement\",\"complement\",-913606051,null),new cljs.core.Symbol(null,\"==\",\"==\",-234118149,null),new cljs.core.Symbol(null,\"hash-map\",\"hash-map\",-439030950,null),new cljs.core.Symbol(null,\"compare\",\"compare\",1109853757,null),new cljs.core.Symbol(null,\"range\",\"range\",-1014743483,null),new cljs.core.Symbol(null,\"max\",\"max\",1701898075,null),new cljs.core.Symbol(null,\"empty?\",\"empty?\",76408555,null),new cljs.core.Symbol(null,\"*\",\"*\",345799209,null),new cljs.core.Symbol(null,\"pr-str\",\"pr-str\",-2066912145,null),new cljs.core.Symbol(null,\"println-str\",\"println-str\",-2049216703,null),new cljs.core.Symbol(null,\"meta\",\"meta\",-1154898805,null),new cljs.core.Symbol(null,\"zero?\",\"zero?\",325758897,null),new cljs.core.Symbol(null,\"!=\",\"!=\",-201205829,null),new cljs.core.Symbol(null,\"prn-str\",\"prn-str\",-145225943,null),new cljs.core.Symbol(null,\"dec\",\"dec\",-766002333,null),new cljs.core.Symbol(null,\"re-pattern\",\"re-pattern\",1047705161,null),new cljs.core.Symbol(null,\"vector\",\"vector\",-751469611,null),new cljs.core.Symbol(null,\"not=\",\"not=\",1466536204,null),new cljs.core.Symbol(null,\"str\",\"str\",-1564826950,null),new cljs.core.Symbol(null,\"<\",\"<\",993667236,null),new cljs.core.Symbol(null,\"namespace\",\"namespace\",1263021155,null),new cljs.core.Symbol(null,\"-\",\"-\",-471816912,null),new cljs.core.Symbol(null,\"some?\",\"some?\",234752293,null),new cljs.core.Symbol(null,\"pos?\",\"pos?\",-244377722,null),new cljs.core.Symbol(null,\"rand\",\"rand\",-1745930995,null),new cljs.core.Symbol(null,\"re-matches\",\"re-matches\",-1865705768,null),new cljs.core.Symbol(null,\"list\",\"list\",-1889078086,null),new cljs.core.Symbol(null,\"contains?\",\"contains?\",-1676812576,null),new cljs.core.Symbol(\"clojure.string\",\"ends-with?\",\"clojure.string/ends-with?\",-745964149,null),new cljs.core.Symbol(null,\"subs\",\"subs\",1453849536,null),new cljs.core.Symbol(null,\"mod\",\"mod\",1510044207,null),new cljs.core.Symbol(\"clojure.string\",\"includes?\",\"clojure.string/includes?\",-1842146260,null),new cljs.core.Symbol(null,\"array-map\",\"array-map\",1555038968,null),new cljs.core.Symbol(null,\"rem\",\"rem\",664046770,null),new cljs.core.Symbol(null,\"even?\",\"even?\",-1827825394,null),new cljs.core.Symbol(null,\"type\",\"type\",-1480165421,null),new cljs.core.Symbol(null,\"neg?\",\"neg?\",-1902175577,null),new cljs.core.Symbol(\"clojure.string\",\"blank?\",\"clojure.string/blank?\",1772874244,null),new cljs.core.Symbol(null,\"not-empty\",\"not-empty\",2029453590,null),new cljs.core.Symbol(null,\"or\",\"or\",1876275696,null),new cljs.core.Symbol(null,\"identical?\",\"identical?\",-745864205,null),new cljs.core.Symbol(null,\"set\",\"set\",1945134081,null),new cljs.core.Symbol(null,\"re-find\",\"re-find\",1143444147,null)],[cljs.core.true_QMARK_,datascript.query.and_fn,cljs.core.odd_QMARK_,datascript.query._get_else,cljs.core._GT__EQ_,cljs.core.print_str,cljs.core._GT_,cljs.core.count,datascript.query._get_some,cljs.core.nil_QMARK_,cljs.core.inc,cljs.core._SLASH_,cljs.core.quot,cljs.core.false_QMARK_,cljs.core.not,cljs.core.identity,datascript.query._differ_QMARK_,cljs.core.re_seq,cljs.core._LT__EQ_,clojure.string.starts_with_QMARK_,cljs.core._EQ_,cljs.core.min,cljs.core._PLUS_,cljs.core.name,datascript.query._missing_QMARK_,cljs.core.identity,cljs.core.rand_int,cljs.core.complement,cljs.core._EQ__EQ_,cljs.core.hash_map,cljs.core.compare,cljs.core.range,cljs.core.max,cljs.core.empty_QMARK_,cljs.core._STAR_,cljs.core.pr_str,cljs.core.println_str,cljs.core.meta,cljs.core.zero_QMARK_,cljs.core.not_EQ_,cljs.core.prn_str,cljs.core.dec,cljs.core.re_pattern,cljs.core.vector,cljs.core.not_EQ_,cljs.core.str,cljs.core._LT_,cljs.core.namespace,cljs.core._,cljs.core.some_QMARK_,cljs.core.pos_QMARK_,cljs.core.rand,cljs.core.re_matches,cljs.core.list,cljs.core.contains_QMARK_,clojure.string.ends_with_QMARK_,cljs.core.subs,cljs.core.mod,clojure.string.includes_QMARK_,cljs.core.array_map,cljs.core.rem,cljs.core.even_QMARK_,cljs.core.type,cljs.core.neg_QMARK_,clojure.string.blank_QMARK_,cljs.core.not_empty,datascript.query.or_fn,cljs.core.identical_QMARK_,cljs.core.set,cljs.core.re_find]);\ndatascript.query.built_in_aggregates = (function (){var sum = (function datascript$query$sum(coll){\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._PLUS_,(0),coll);\n});\nvar avg = (function datascript$query$avg(coll){\nreturn (sum(coll) / cljs.core.count(coll));\n});\nvar median = (function datascript$query$median(coll){\nvar terms = cljs.core.sort.cljs$core$IFn$_invoke$arity$1(coll);\nvar size = cljs.core.count(coll);\nvar med = (size >> (1));\nvar G__25205 = cljs.core.nth.cljs$core$IFn$_invoke$arity$2(terms,med);\nif(cljs.core.even_QMARK_(size)){\nreturn ((G__25205 + cljs.core.nth.cljs$core$IFn$_invoke$arity$2(terms,(med - (1)))) / (2));\n} else {\nreturn G__25205;\n}\n});\nvar variance = (function datascript$query$variance(coll){\nvar mean = avg(coll);\nvar sum__$1 = sum((function (){var iter__4582__auto__ = (function datascript$query$variance_$_iter__25206(s__25207){\nreturn (new cljs.core.LazySeq(null,(function (){\nvar s__25207__$1 = s__25207;\nwhile(true){\nvar temp__5735__auto__ = cljs.core.seq(s__25207__$1);\nif(temp__5735__auto__){\nvar s__25207__$2 = temp__5735__auto__;\nif(cljs.core.chunked_seq_QMARK_(s__25207__$2)){\nvar c__4580__auto__ = cljs.core.chunk_first(s__25207__$2);\nvar size__4581__auto__ = cljs.core.count(c__4580__auto__);\nvar b__25209 = cljs.core.chunk_buffer(size__4581__auto__);\nif((function (){var i__25208 = (0);\nwhile(true){\nif((i__25208 < size__4581__auto__)){\nvar x = cljs.core._nth(c__4580__auto__,i__25208);\nvar delta = (x - mean);\ncljs.core.chunk_append(b__25209,(delta * delta));\n\nvar G__25656 = (i__25208 + (1));\ni__25208 = G__25656;\ncontinue;\n} else {\nreturn true;\n}\nbreak;\n}\n})()){\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25209),datascript$query$variance_$_iter__25206(cljs.core.chunk_rest(s__25207__$2)));\n} else {\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25209),null);\n}\n} else {\nvar x = cljs.core.first(s__25207__$2);\nvar delta = (x - mean);\nreturn cljs.core.cons((delta * delta),datascript$query$variance_$_iter__25206(cljs.core.rest(s__25207__$2)));\n}\n} else {\nreturn null;\n}\nbreak;\n}\n}),null,null));\n});\nreturn iter__4582__auto__(coll);\n})());\nreturn (sum__$1 / cljs.core.count(coll));\n});\nvar stddev = (function datascript$query$stddev(coll){\nreturn Math.sqrt(variance(coll));\n});\nreturn cljs.core.PersistentHashMap.fromArrays([new cljs.core.Symbol(null,\"variance\",\"variance\",-1522424942,null),new cljs.core.Symbol(null,\"count\",\"count\",-514511684,null),new cljs.core.Symbol(null,\"median\",\"median\",-2084869638,null),new cljs.core.Symbol(null,\"sum\",\"sum\",1777518341,null),new cljs.core.Symbol(null,\"min\",\"min\",2085523049,null),new cljs.core.Symbol(null,\"max\",\"max\",1701898075,null),new cljs.core.Symbol(null,\"count-distinct\",\"count-distinct\",-1566572514,null),new cljs.core.Symbol(null,\"distinct\",\"distinct\",-148347594,null),new cljs.core.Symbol(null,\"avg\",\"avg\",1837937727,null),new cljs.core.Symbol(null,\"stddev\",\"stddev\",775056588,null),new cljs.core.Symbol(null,\"rand\",\"rand\",-1745930995,null),new cljs.core.Symbol(null,\"sample\",\"sample\",1719555128,null)],[variance,cljs.core.count,median,sum,(function() {\nvar G__25657 = null;\nvar G__25657__1 = (function (coll){\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (acc,x){\nif((cljs.core.compare(x,acc) < (0))){\nreturn x;\n} else {\nreturn acc;\n}\n}),cljs.core.first(coll),cljs.core.next(coll));\n});\nvar G__25657__2 = (function (n,coll){\nreturn cljs.core.vec(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (acc,x){\nif((cljs.core.count(acc) < n)){\nreturn cljs.core.sort.cljs$core$IFn$_invoke$arity$2(cljs.core.compare,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(acc,x));\n} else {\nif((cljs.core.compare(x,cljs.core.last(acc)) < (0))){\nreturn cljs.core.sort.cljs$core$IFn$_invoke$arity$2(cljs.core.compare,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.butlast(acc),x));\n} else {\nreturn acc;\n\n}\n}\n}),cljs.core.PersistentVector.EMPTY,coll));\n});\nG__25657 = function(n,coll){\nswitch(arguments.length){\ncase 1:\nreturn G__25657__1.call(this,n);\ncase 2:\nreturn G__25657__2.call(this,n,coll);\n}\nthrow(new Error('Invalid arity: ' + arguments.length));\n};\nG__25657.cljs$core$IFn$_invoke$arity$1 = G__25657__1;\nG__25657.cljs$core$IFn$_invoke$arity$2 = G__25657__2;\nreturn G__25657;\n})()\n,(function() {\nvar G__25665 = null;\nvar G__25665__1 = (function (coll){\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (acc,x){\nif((cljs.core.compare(x,acc) > (0))){\nreturn x;\n} else {\nreturn acc;\n}\n}),cljs.core.first(coll),cljs.core.next(coll));\n});\nvar G__25665__2 = (function (n,coll){\nreturn cljs.core.vec(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (acc,x){\nif((cljs.core.count(acc) < n)){\nreturn cljs.core.sort.cljs$core$IFn$_invoke$arity$2(cljs.core.compare,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(acc,x));\n} else {\nif((cljs.core.compare(x,cljs.core.first(acc)) > (0))){\nreturn cljs.core.sort.cljs$core$IFn$_invoke$arity$2(cljs.core.compare,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.next(acc),x));\n} else {\nreturn acc;\n\n}\n}\n}),cljs.core.PersistentVector.EMPTY,coll));\n});\nG__25665 = function(n,coll){\nswitch(arguments.length){\ncase 1:\nreturn G__25665__1.call(this,n);\ncase 2:\nreturn G__25665__2.call(this,n,coll);\n}\nthrow(new Error('Invalid arity: ' + arguments.length));\n};\nG__25665.cljs$core$IFn$_invoke$arity$1 = G__25665__1;\nG__25665.cljs$core$IFn$_invoke$arity$2 = G__25665__2;\nreturn G__25665;\n})()\n,(function (coll){\nreturn cljs.core.count(cljs.core.distinct.cljs$core$IFn$_invoke$arity$1(coll));\n}),cljs.core.set,avg,stddev,(function() {\nvar G__25666 = null;\nvar G__25666__1 = (function (coll){\nreturn cljs.core.rand_nth(coll);\n});\nvar G__25666__2 = (function (n,coll){\nreturn cljs.core.vec(cljs.core.repeatedly.cljs$core$IFn$_invoke$arity$2(n,(function (){\nreturn cljs.core.rand_nth(coll);\n})));\n});\nG__25666 = function(n,coll){\nswitch(arguments.length){\ncase 1:\nreturn G__25666__1.call(this,n);\ncase 2:\nreturn G__25666__2.call(this,n,coll);\n}\nthrow(new Error('Invalid arity: ' + arguments.length));\n};\nG__25666.cljs$core$IFn$_invoke$arity$1 = G__25666__1;\nG__25666.cljs$core$IFn$_invoke$arity$2 = G__25666__2;\nreturn G__25666;\n})()\n,(function (n,coll){\nreturn cljs.core.vec(cljs.core.take.cljs$core$IFn$_invoke$arity$2(n,cljs.core.shuffle(coll)));\n})]);\n})();\ndatascript.query.parse_rules = (function datascript$query$parse_rules(rules){\nvar rules__$1 = ((typeof rules === 'string')?cljs.reader.read_string.cljs$core$IFn$_invoke$arity$1(rules):rules);\nreturn cljs.core.group_by(cljs.core.ffirst,rules__$1);\n});\ndatascript.query.empty_rel = (function datascript$query$empty_rel(binding){\nvar vars = cljs.core.map.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"symbol\",\"symbol\",-1038572696),datascript.parser.collect_vars_distinct(binding));\nreturn (new datascript.query.Relation(cljs.core.zipmap(vars,cljs.core.range.cljs$core$IFn$_invoke$arity$0()),cljs.core.PersistentVector.EMPTY,null,null,null));\n});\n\n/**\n * @interface\n */\ndatascript.query.IBinding = function(){};\n\ndatascript.query.in__GT_rel = (function datascript$query$in__GT_rel(binding,value){\nif((((!((binding == null)))) && ((!((binding.datascript$query$IBinding$in__GT_rel$arity$2 == null)))))){\nreturn binding.datascript$query$IBinding$in__GT_rel$arity$2(binding,value);\n} else {\nvar x__4487__auto__ = (((binding == null))?null:binding);\nvar m__4488__auto__ = (datascript.query.in__GT_rel[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(binding,value) : m__4488__auto__.call(null,binding,value));\n} else {\nvar m__4485__auto__ = (datascript.query.in__GT_rel[\"_\"]);\nif((!((m__4485__auto__ == null)))){\nreturn (m__4485__auto__.cljs$core$IFn$_invoke$arity$2 ? m__4485__auto__.cljs$core$IFn$_invoke$arity$2(binding,value) : m__4485__auto__.call(null,binding,value));\n} else {\nthrow cljs.core.missing_protocol(\"IBinding.in->rel\",binding);\n}\n}\n}\n});\n\n(datascript.parser.BindIgnore.prototype.datascript$query$IBinding$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.parser.BindIgnore.prototype.datascript$query$IBinding$in__GT_rel$arity$2 = (function (_,___$1){\nvar ___$2 = this;\nreturn datascript.query.prod_rel.cljs$core$IFn$_invoke$arity$0();\n}));\n\n(datascript.parser.BindScalar.prototype.datascript$query$IBinding$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.parser.BindScalar.prototype.datascript$query$IBinding$in__GT_rel$arity$2 = (function (binding,value){\nvar binding__$1 = this;\nreturn (new datascript.query.Relation(cljs.core.PersistentArrayMap.createAsIfByAssoc([cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(binding__$1,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"variable\",\"variable\",-281346492),new cljs.core.Keyword(null,\"symbol\",\"symbol\",-1038572696)], null)),(0)]),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.into_array.cljs$core$IFn$_invoke$arity$1(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [value], null))], null),null,null,null));\n}));\n\n(datascript.parser.BindColl.prototype.datascript$query$IBinding$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.parser.BindColl.prototype.datascript$query$IBinding$in__GT_rel$arity$2 = (function (binding,coll){\nvar binding__$1 = this;\nif((!(datascript.db.seqable_QMARK_(coll)))){\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Cannot bind value \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([coll], 0)),\" to collection \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datascript.parser.source(binding__$1)], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"query\",\"binding\",\"query/binding\",698240489),new cljs.core.Keyword(null,\"value\",\"value\",305978217),coll,new cljs.core.Keyword(null,\"binding\",\"binding\",539932593),datascript.parser.source(binding__$1)], null));\n} else {\nif(cljs.core.empty_QMARK_(coll)){\nreturn datascript.query.empty_rel(binding__$1);\n} else {\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.sum_rel,cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__25212_SHARP_){\nreturn datascript.query.in__GT_rel(binding__$1.binding,p1__25212_SHARP_);\n}),coll));\n\n}\n}\n}));\n\n(datascript.parser.BindTuple.prototype.datascript$query$IBinding$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.parser.BindTuple.prototype.datascript$query$IBinding$in__GT_rel$arity$2 = (function (binding,coll){\nvar binding__$1 = this;\nif((!(datascript.db.seqable_QMARK_(coll)))){\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Cannot bind value \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([coll], 0)),\" to tuple \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datascript.parser.source(binding__$1)], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"query\",\"binding\",\"query/binding\",698240489),new cljs.core.Keyword(null,\"value\",\"value\",305978217),coll,new cljs.core.Keyword(null,\"binding\",\"binding\",539932593),datascript.parser.source(binding__$1)], null));\n} else {\nif((cljs.core.count(coll) < cljs.core.count(binding__$1.bindings))){\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Not enough elements in a collection \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([coll], 0)),\" to bind tuple \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datascript.parser.source(binding__$1)], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"query\",\"binding\",\"query/binding\",698240489),new cljs.core.Keyword(null,\"value\",\"value\",305978217),coll,new cljs.core.Keyword(null,\"binding\",\"binding\",539932593),datascript.parser.source(binding__$1)], null));\n} else {\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.prod_rel,cljs.core.map.cljs$core$IFn$_invoke$arity$3((function (p1__25213_SHARP_,p2__25214_SHARP_){\nreturn datascript.query.in__GT_rel(p1__25213_SHARP_,p2__25214_SHARP_);\n}),binding__$1.bindings,coll));\n\n}\n}\n}));\ndatascript.query.resolve_in = (function datascript$query$resolve_in(context,p__25216){\nvar vec__25217 = p__25216;\nvar binding = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25217,(0),null);\nvar value = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25217,(1),null);\nif((((binding instanceof datascript.parser.BindScalar)) && ((binding.variable instanceof datascript.parser.SrcVar)))){\nreturn cljs.core.update.cljs$core$IFn$_invoke$arity$5(context,new cljs.core.Keyword(null,\"sources\",\"sources\",-321166424),cljs.core.assoc,cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(binding,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"variable\",\"variable\",-281346492),new cljs.core.Keyword(null,\"symbol\",\"symbol\",-1038572696)], null)),value);\n} else {\nif((((binding instanceof datascript.parser.BindScalar)) && ((binding.variable instanceof datascript.parser.RulesVar)))){\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(context,new cljs.core.Keyword(null,\"rules\",\"rules\",1198912366),datascript.query.parse_rules(value));\n} else {\nreturn cljs.core.update.cljs$core$IFn$_invoke$arity$4(context,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),cljs.core.conj,datascript.query.in__GT_rel(binding,value));\n\n}\n}\n});\ndatascript.query.resolve_ins = (function datascript$query$resolve_ins(context,bindings,values){\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(datascript.query.resolve_in,context,cljs.core.zipmap(bindings,values));\n});\n/**\n * List of symbols in current pattern that might potentiall be resolved to refs\n */\ndatascript.query._STAR_lookup_attrs_STAR_ = null;\n/**\n * Default pattern source. Lookup refs, patterns, rules will be resolved with it\n */\ndatascript.query._STAR_implicit_source_STAR_ = null;\ndatascript.query.getter_fn = (function datascript$query$getter_fn(attrs,attr){\nvar idx = (attrs.cljs$core$IFn$_invoke$arity$1 ? attrs.cljs$core$IFn$_invoke$arity$1(attr) : attrs.call(null,attr));\nif(cljs.core.contains_QMARK_(datascript.query._STAR_lookup_attrs_STAR_,attr)){\nreturn (function (tuple){\nvar eid = (tuple[idx]);\nif(typeof eid === 'number'){\nreturn eid;\n} else {\nif(cljs.core.sequential_QMARK_(eid)){\nreturn datascript.db.entid(datascript.query._STAR_implicit_source_STAR_,eid);\n} else {\nif(me.tonsky.persistent_sorted_set.arrays.array_QMARK_(eid)){\nreturn datascript.db.entid(datascript.query._STAR_implicit_source_STAR_,eid);\n} else {\nreturn eid;\n\n}\n}\n}\n});\n} else {\nreturn (function (tuple){\nreturn (tuple[idx]);\n});\n}\n});\ndatascript.query.tuple_key_fn = (function datascript$query$tuple_key_fn(getters){\nif((cljs.core.count(getters) === (1))){\nreturn cljs.core.first(getters);\n} else {\nvar getters__$1 = cljs.core.to_array(getters);\nreturn (function (tuple){\nreturn cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$1(getters__$1.map((function (p1__25220_SHARP_){\nreturn (p1__25220_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__25220_SHARP_.cljs$core$IFn$_invoke$arity$1(tuple) : p1__25220_SHARP_.call(null,tuple));\n})));\n});\n}\n});\ndatascript.query.hash_attrs = (function datascript$query$hash_attrs(key_fn,tuples){\nvar tuples__$1 = tuples;\nvar hash_table = cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY);\nwhile(true){\nvar temp__5737__auto__ = cljs.core.first(tuples__$1);\nif((temp__5737__auto__ == null)){\nreturn cljs.core.persistent_BANG_(hash_table);\n} else {\nvar tuple = temp__5737__auto__;\nvar key = (key_fn.cljs$core$IFn$_invoke$arity$1 ? key_fn.cljs$core$IFn$_invoke$arity$1(tuple) : key_fn.call(null,tuple));\nvar G__25671 = cljs.core.next(tuples__$1);\nvar G__25672 = cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(hash_table,key,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.get.cljs$core$IFn$_invoke$arity$3(hash_table,key,cljs.core.List.EMPTY),tuple));\ntuples__$1 = G__25671;\nhash_table = G__25672;\ncontinue;\n}\nbreak;\n}\n});\ndatascript.query.hash_join = (function datascript$query$hash_join(rel1,rel2){\nvar tuples1 = new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639).cljs$core$IFn$_invoke$arity$1(rel1);\nvar tuples2 = new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639).cljs$core$IFn$_invoke$arity$1(rel2);\nvar attrs1 = new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(rel1);\nvar attrs2 = new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(rel2);\nvar common_attrs = cljs.core.vec(datascript.query.intersect_keys(new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(rel1),new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(rel2)));\nvar common_gtrs1 = cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__25222_SHARP_){\nreturn datascript.query.getter_fn(attrs1,p1__25222_SHARP_);\n}),common_attrs);\nvar common_gtrs2 = cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__25223_SHARP_){\nreturn datascript.query.getter_fn(attrs2,p1__25223_SHARP_);\n}),common_attrs);\nvar keep_attrs1 = cljs.core.keys(attrs1);\nvar keep_attrs2 = cljs.core.vec(clojure.set.difference.cljs$core$IFn$_invoke$arity$2(cljs.core.set(cljs.core.keys(attrs2)),cljs.core.set(cljs.core.keys(attrs1))));\nvar keep_idxs1 = cljs.core.to_array(cljs.core.map.cljs$core$IFn$_invoke$arity$2(attrs1,keep_attrs1));\nvar keep_idxs2 = cljs.core.to_array(cljs.core.map.cljs$core$IFn$_invoke$arity$2(attrs2,keep_attrs2));\nvar key_fn1 = datascript.query.tuple_key_fn(common_gtrs1);\nvar hash = datascript.query.hash_attrs(key_fn1,tuples1);\nvar key_fn2 = datascript.query.tuple_key_fn(common_gtrs2);\nvar new_tuples = cljs.core.persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (acc,tuple2){\nvar key = (key_fn2.cljs$core$IFn$_invoke$arity$1 ? key_fn2.cljs$core$IFn$_invoke$arity$1(tuple2) : key_fn2.call(null,tuple2));\nvar temp__5737__auto__ = cljs.core.get.cljs$core$IFn$_invoke$arity$2(hash,key);\nif((temp__5737__auto__ == null)){\nreturn acc;\n} else {\nvar tuples1__$1 = temp__5737__auto__;\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (acc__$1,tuple1){\nreturn cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(acc__$1,datascript.query.join_tuples(tuple1,keep_idxs1,tuple2,keep_idxs2));\n}),acc,tuples1__$1);\n}\n}),cljs.core.transient$(cljs.core.PersistentVector.EMPTY),tuples2));\nreturn (new datascript.query.Relation(cljs.core.zipmap(cljs.core.concat.cljs$core$IFn$_invoke$arity$2(keep_attrs1,keep_attrs2),cljs.core.range.cljs$core$IFn$_invoke$arity$0()),new_tuples,null,null,null));\n});\ndatascript.query.subtract_rel = (function datascript$query$subtract_rel(a,b){\nvar map__25228 = a;\nvar map__25228__$1 = (((((!((map__25228 == null))))?(((((map__25228.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__25228.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__25228):map__25228);\nvar attrs_a = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__25228__$1,new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713));\nvar tuples_a = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__25228__$1,new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639));\nvar map__25229 = b;\nvar map__25229__$1 = (((((!((map__25229 == null))))?(((((map__25229.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__25229.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__25229):map__25229);\nvar attrs_b = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__25229__$1,new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713));\nvar tuples_b = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__25229__$1,new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639));\nvar attrs = datascript.query.intersect_keys(attrs_a,attrs_b);\nvar getters_b = cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__25225_SHARP_){\nreturn datascript.query.getter_fn(attrs_b,p1__25225_SHARP_);\n}),attrs);\nvar key_fn_b = datascript.query.tuple_key_fn(getters_b);\nvar hash = datascript.query.hash_attrs(key_fn_b,tuples_b);\nvar getters_a = cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__25226_SHARP_){\nreturn datascript.query.getter_fn(attrs_a,p1__25226_SHARP_);\n}),attrs);\nvar key_fn_a = datascript.query.tuple_key_fn(getters_a);\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(a,new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639),cljs.core.filterv((function (p1__25227_SHARP_){\nreturn ((function (){var G__25232 = (key_fn_a.cljs$core$IFn$_invoke$arity$1 ? key_fn_a.cljs$core$IFn$_invoke$arity$1(p1__25227_SHARP_) : key_fn_a.call(null,p1__25227_SHARP_));\nreturn (hash.cljs$core$IFn$_invoke$arity$1 ? hash.cljs$core$IFn$_invoke$arity$1(G__25232) : hash.call(null,G__25232));\n})() == null);\n}),tuples_a));\n});\ndatascript.query.lookup_pattern_db = (function datascript$query$lookup_pattern_db(db,pattern){\nvar search_pattern = cljs.core.mapv.cljs$core$IFn$_invoke$arity$2((function (p1__25233_SHARP_){\nif((p1__25233_SHARP_ instanceof cljs.core.Symbol)){\nreturn null;\n} else {\nreturn p1__25233_SHARP_;\n}\n}),pattern);\nvar datoms = datascript.db._search(db,search_pattern);\nvar attr__GT_prop = cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (p__25234){\nvar vec__25235 = p__25234;\nvar s = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25235,(0),null);\nvar _ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25235,(1),null);\nreturn datascript.query.free_var_QMARK_(s);\n}),cljs.core.map.cljs$core$IFn$_invoke$arity$3(cljs.core.vector,pattern,new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [\"e\",\"a\",\"v\",\"tx\"], null))));\nreturn (new datascript.query.Relation(attr__GT_prop,datoms,null,null,null));\n});\ndatascript.query.matches_pattern_QMARK_ = (function datascript$query$matches_pattern_QMARK_(pattern,tuple){\nvar tuple__$1 = tuple;\nvar pattern__$1 = pattern;\nwhile(true){\nif(cljs.core.truth_((function (){var and__4174__auto__ = tuple__$1;\nif(cljs.core.truth_(and__4174__auto__)){\nreturn pattern__$1;\n} else {\nreturn and__4174__auto__;\n}\n})())){\nvar t = cljs.core.first(tuple__$1);\nvar p = cljs.core.first(pattern__$1);\nif((((p instanceof cljs.core.Symbol)) || (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(t,p)))){\nvar G__25680 = cljs.core.next(tuple__$1);\nvar G__25681 = cljs.core.next(pattern__$1);\ntuple__$1 = G__25680;\npattern__$1 = G__25681;\ncontinue;\n} else {\nreturn false;\n}\n} else {\nreturn true;\n}\nbreak;\n}\n});\ndatascript.query.lookup_pattern_coll = (function datascript$query$lookup_pattern_coll(coll,pattern){\nvar data = cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (p1__25238_SHARP_){\nreturn datascript.query.matches_pattern_QMARK_(pattern,p1__25238_SHARP_);\n}),coll);\nvar attr__GT_idx = cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (p__25240){\nvar vec__25241 = p__25240;\nvar s = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25241,(0),null);\nvar _ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25241,(1),null);\nreturn datascript.query.free_var_QMARK_(s);\n}),cljs.core.map.cljs$core$IFn$_invoke$arity$3(cljs.core.vector,pattern,cljs.core.range.cljs$core$IFn$_invoke$arity$0())));\nreturn (new datascript.query.Relation(attr__GT_idx,cljs.core.mapv.cljs$core$IFn$_invoke$arity$2(cljs.core.to_array,data),null,null,null));\n});\ndatascript.query.normalize_pattern_clause = (function datascript$query$normalize_pattern_clause(clause){\nif(datascript.query.source_QMARK_(cljs.core.first(clause))){\nreturn clause;\n} else {\nreturn cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"$\",\"$\",-1580747756,null)], null),clause);\n}\n});\ndatascript.query.lookup_pattern = (function datascript$query$lookup_pattern(source,pattern){\nif((((!((source == null))))?((((false) || ((cljs.core.PROTOCOL_SENTINEL === source.datascript$db$ISearch$))))?true:(((!source.cljs$lang$protocol_mask$partition$))?cljs.core.native_satisfies_QMARK_(datascript.db.ISearch,source):false)):cljs.core.native_satisfies_QMARK_(datascript.db.ISearch,source))){\nreturn datascript.query.lookup_pattern_db(source,pattern);\n} else {\nreturn datascript.query.lookup_pattern_coll(source,pattern);\n\n}\n});\ndatascript.query.collapse_rels = (function datascript$query$collapse_rels(rels,new_rel){\nvar rels__$1 = rels;\nvar new_rel__$1 = new_rel;\nvar acc = cljs.core.PersistentVector.EMPTY;\nwhile(true){\nvar temp__5737__auto__ = cljs.core.first(rels__$1);\nif((temp__5737__auto__ == null)){\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$2(acc,new_rel__$1);\n} else {\nvar rel = temp__5737__auto__;\nif(cljs.core.truth_(cljs.core.not_empty(datascript.query.intersect_keys(new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(new_rel__$1),new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(rel))))){\nvar G__25764 = cljs.core.next(rels__$1);\nvar G__25765 = datascript.query.hash_join(rel,new_rel__$1);\nvar G__25766 = acc;\nrels__$1 = G__25764;\nnew_rel__$1 = G__25765;\nacc = G__25766;\ncontinue;\n} else {\nvar G__25767 = cljs.core.next(rels__$1);\nvar G__25768 = new_rel__$1;\nvar G__25769 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(acc,rel);\nrels__$1 = G__25767;\nnew_rel__$1 = G__25768;\nacc = G__25769;\ncontinue;\n}\n}\nbreak;\n}\n});\ndatascript.query.rel_with_attr = (function datascript$query$rel_with_attr(context,sym){\nreturn cljs.core.some((function (p1__25245_SHARP_){\nif(cljs.core.contains_QMARK_(new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(p1__25245_SHARP_),sym)){\nreturn p1__25245_SHARP_;\n} else {\nreturn null;\n}\n}),new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185).cljs$core$IFn$_invoke$arity$1(context));\n});\ndatascript.query.context_resolve_val = (function datascript$query$context_resolve_val(context,sym){\nvar temp__5739__auto__ = datascript.query.rel_with_attr(context,sym);\nif((temp__5739__auto__ == null)){\nreturn null;\n} else {\nvar rel = temp__5739__auto__;\nvar temp__5739__auto____$1 = cljs.core.first(new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639).cljs$core$IFn$_invoke$arity$1(rel));\nif((temp__5739__auto____$1 == null)){\nreturn null;\n} else {\nvar tuple = temp__5739__auto____$1;\nreturn (tuple[(function (){var fexpr__25246 = new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(rel);\nreturn (fexpr__25246.cljs$core$IFn$_invoke$arity$1 ? fexpr__25246.cljs$core$IFn$_invoke$arity$1(sym) : fexpr__25246.call(null,sym));\n})()]);\n}\n}\n});\ndatascript.query.rel_contains_attrs_QMARK_ = (function datascript$query$rel_contains_attrs_QMARK_(rel,attrs){\nreturn cljs.core.some((function (p1__25247_SHARP_){\nreturn cljs.core.contains_QMARK_(new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(rel),p1__25247_SHARP_);\n}),attrs);\n});\ndatascript.query.rel_prod_by_attrs = (function datascript$query$rel_prod_by_attrs(context,attrs){\nvar rels = cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (p1__25248_SHARP_){\nreturn datascript.query.rel_contains_attrs_QMARK_(p1__25248_SHARP_,attrs);\n}),new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185).cljs$core$IFn$_invoke$arity$1(context));\nvar production = cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.prod_rel,rels);\nreturn new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.update.cljs$core$IFn$_invoke$arity$3(context,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),(function (p1__25249_SHARP_){\nreturn cljs.core.remove.cljs$core$IFn$_invoke$arity$2(cljs.core.set(rels),p1__25249_SHARP_);\n})),production], null);\n});\ndatascript.query._call_fn = (function datascript$query$_call_fn(context,rel,f,args){\nvar sources = new cljs.core.Keyword(null,\"sources\",\"sources\",-321166424).cljs$core$IFn$_invoke$arity$1(context);\nvar attrs = new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(rel);\nvar len = cljs.core.count(args);\nvar static_args = me.tonsky.persistent_sorted_set.arrays.make_array(len);\nvar tuples_args = me.tonsky.persistent_sorted_set.arrays.make_array(len);\nvar n__4666__auto___25775 = len;\nvar i_25776 = (0);\nwhile(true){\nif((i_25776 < n__4666__auto___25775)){\nvar arg_25777 = cljs.core.nth.cljs$core$IFn$_invoke$arity$2(args,i_25776);\nif((arg_25777 instanceof cljs.core.Symbol)){\nvar temp__5737__auto___25778 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(sources,arg_25777);\nif((temp__5737__auto___25778 == null)){\n(tuples_args[i_25776] = cljs.core.get.cljs$core$IFn$_invoke$arity$2(attrs,arg_25777));\n} else {\nvar source_25779 = temp__5737__auto___25778;\n(static_args[i_25776] = source_25779);\n}\n} else {\n(static_args[i_25776] = arg_25777);\n}\n\nvar G__25780 = (i_25776 + (1));\ni_25776 = G__25780;\ncontinue;\n} else {\n}\nbreak;\n}\n\nif((f === cljs.core.vector)){\nreturn (function (tuple){\nvar args__$1 = me.tonsky.persistent_sorted_set.arrays.aclone(static_args);\nvar n__4666__auto___25781 = len;\nvar i_25782 = (0);\nwhile(true){\nif((i_25782 < n__4666__auto___25781)){\nvar temp__5739__auto___25783 = (tuples_args[i_25782]);\nif((temp__5739__auto___25783 == null)){\n} else {\nvar tuple_idx_25784 = temp__5739__auto___25783;\nvar v_25785 = (tuple[tuple_idx_25784]);\n(args__$1[i_25782] = v_25785);\n}\n\nvar G__25786 = (i_25782 + (1));\ni_25782 = G__25786;\ncontinue;\n} else {\n}\nbreak;\n}\n\nreturn cljs.core.apply.cljs$core$IFn$_invoke$arity$2(f,args__$1);\n});\n} else {\nreturn (function (tuple){\nvar n__4666__auto___25787 = len;\nvar i_25788 = (0);\nwhile(true){\nif((i_25788 < n__4666__auto___25787)){\nvar temp__5739__auto___25789 = (tuples_args[i_25788]);\nif((temp__5739__auto___25789 == null)){\n} else {\nvar tuple_idx_25790 = temp__5739__auto___25789;\nvar v_25791 = (tuple[tuple_idx_25790]);\n(static_args[i_25788] = v_25791);\n}\n\nvar G__25792 = (i_25788 + (1));\ni_25788 = G__25792;\ncontinue;\n} else {\n}\nbreak;\n}\n\nreturn cljs.core.apply.cljs$core$IFn$_invoke$arity$2(f,static_args);\n});\n}\n});\ndatascript.query.resolve_sym = (function datascript$query$resolve_sym(sym){\nreturn null;\n});\ndatascript.query.filter_by_pred = (function datascript$query$filter_by_pred(context,clause){\nvar vec__25252 = clause;\nvar vec__25255 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25252,(0),null);\nvar seq__25256 = cljs.core.seq(vec__25255);\nvar first__25257 = cljs.core.first(seq__25256);\nvar seq__25256__$1 = cljs.core.next(seq__25256);\nvar f = first__25257;\nvar args = seq__25256__$1;\nvar pred = (function (){var or__4185__auto__ = cljs.core.get.cljs$core$IFn$_invoke$arity$2(datascript.query.built_ins,f);\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nvar or__4185__auto____$1 = datascript.query.context_resolve_val(context,f);\nif(cljs.core.truth_(or__4185__auto____$1)){\nreturn or__4185__auto____$1;\n} else {\nvar or__4185__auto____$2 = datascript.query.resolve_sym(f);\nif(cljs.core.truth_(or__4185__auto____$2)){\nreturn or__4185__auto____$2;\n} else {\nif((datascript.query.rel_with_attr(context,f) == null)){\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Unknown predicate '\",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([f], 0)),\" in \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([clause], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"query\",\"where\",\"query/where\",-1935159429),new cljs.core.Keyword(null,\"form\",\"form\",-1624062471),clause,new cljs.core.Keyword(null,\"var\",\"var\",-769682797),f], null));\n} else {\nreturn null;\n}\n}\n}\n}\n})();\nvar vec__25258 = datascript.query.rel_prod_by_attrs(context,cljs.core.filter.cljs$core$IFn$_invoke$arity$2(cljs.core.symbol_QMARK_,args));\nvar context__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25258,(0),null);\nvar production = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25258,(1),null);\nvar new_rel = (cljs.core.truth_(pred)?(function (){var tuple_pred = datascript.query._call_fn(context__$1,production,pred,args);\nreturn cljs.core.update.cljs$core$IFn$_invoke$arity$3(production,new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639),(function (p1__25251_SHARP_){\nreturn cljs.core.filter.cljs$core$IFn$_invoke$arity$2(tuple_pred,p1__25251_SHARP_);\n}));\n})():cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(production,new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639),cljs.core.PersistentVector.EMPTY));\nreturn cljs.core.update.cljs$core$IFn$_invoke$arity$4(context__$1,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),cljs.core.conj,new_rel);\n});\ndatascript.query.bind_by_fn = (function datascript$query$bind_by_fn(context,clause){\nvar vec__25262 = clause;\nvar vec__25265 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25262,(0),null);\nvar seq__25266 = cljs.core.seq(vec__25265);\nvar first__25267 = cljs.core.first(seq__25266);\nvar seq__25266__$1 = cljs.core.next(seq__25266);\nvar f = first__25267;\nvar args = seq__25266__$1;\nvar out = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25262,(1),null);\nvar binding = datascript.parser.parse_binding(out);\nvar fun = (function (){var or__4185__auto__ = cljs.core.get.cljs$core$IFn$_invoke$arity$2(datascript.query.built_ins,f);\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nvar or__4185__auto____$1 = datascript.query.context_resolve_val(context,f);\nif(cljs.core.truth_(or__4185__auto____$1)){\nreturn or__4185__auto____$1;\n} else {\nvar or__4185__auto____$2 = datascript.query.resolve_sym(f);\nif(cljs.core.truth_(or__4185__auto____$2)){\nreturn or__4185__auto____$2;\n} else {\nif((datascript.query.rel_with_attr(context,f) == null)){\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Unknown function '\",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([f], 0)),\" in \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([clause], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"query\",\"where\",\"query/where\",-1935159429),new cljs.core.Keyword(null,\"form\",\"form\",-1624062471),clause,new cljs.core.Keyword(null,\"var\",\"var\",-769682797),f], null));\n} else {\nreturn null;\n}\n}\n}\n}\n})();\nvar vec__25268 = datascript.query.rel_prod_by_attrs(context,cljs.core.filter.cljs$core$IFn$_invoke$arity$2(cljs.core.symbol_QMARK_,args));\nvar context__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25268,(0),null);\nvar production = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25268,(1),null);\nvar new_rel = (cljs.core.truth_(fun)?(function (){var tuple_fn = datascript.query._call_fn(context__$1,production,fun,args);\nvar rels = (function (){var iter__4582__auto__ = (function datascript$query$bind_by_fn_$_iter__25271(s__25272){\nreturn (new cljs.core.LazySeq(null,(function (){\nvar s__25272__$1 = s__25272;\nwhile(true){\nvar temp__5735__auto__ = cljs.core.seq(s__25272__$1);\nif(temp__5735__auto__){\nvar s__25272__$2 = temp__5735__auto__;\nif(cljs.core.chunked_seq_QMARK_(s__25272__$2)){\nvar c__4580__auto__ = cljs.core.chunk_first(s__25272__$2);\nvar size__4581__auto__ = cljs.core.count(c__4580__auto__);\nvar b__25274 = cljs.core.chunk_buffer(size__4581__auto__);\nif((function (){var i__25273 = (0);\nwhile(true){\nif((i__25273 < size__4581__auto__)){\nvar tuple = cljs.core._nth(c__4580__auto__,i__25273);\nvar val = tuple_fn(tuple);\nif((!((val == null)))){\ncljs.core.chunk_append(b__25274,datascript.query.prod_rel.cljs$core$IFn$_invoke$arity$2((new datascript.query.Relation(new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(production),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [tuple], null),null,null,null)),datascript.query.in__GT_rel(binding,val)));\n\nvar G__25794 = (i__25273 + (1));\ni__25273 = G__25794;\ncontinue;\n} else {\nvar G__25795 = (i__25273 + (1));\ni__25273 = G__25795;\ncontinue;\n}\n} else {\nreturn true;\n}\nbreak;\n}\n})()){\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25274),datascript$query$bind_by_fn_$_iter__25271(cljs.core.chunk_rest(s__25272__$2)));\n} else {\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25274),null);\n}\n} else {\nvar tuple = cljs.core.first(s__25272__$2);\nvar val = tuple_fn(tuple);\nif((!((val == null)))){\nreturn cljs.core.cons(datascript.query.prod_rel.cljs$core$IFn$_invoke$arity$2((new datascript.query.Relation(new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(production),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [tuple], null),null,null,null)),datascript.query.in__GT_rel(binding,val)),datascript$query$bind_by_fn_$_iter__25271(cljs.core.rest(s__25272__$2)));\n} else {\nvar G__25797 = cljs.core.rest(s__25272__$2);\ns__25272__$1 = G__25797;\ncontinue;\n}\n}\n} else {\nreturn null;\n}\nbreak;\n}\n}),null,null));\n});\nreturn iter__4582__auto__(new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639).cljs$core$IFn$_invoke$arity$1(production));\n})();\nif(cljs.core.empty_QMARK_(rels)){\nreturn datascript.query.prod_rel.cljs$core$IFn$_invoke$arity$2(production,datascript.query.empty_rel(binding));\n} else {\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.sum_rel,rels);\n}\n})():datascript.query.prod_rel.cljs$core$IFn$_invoke$arity$2(cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(production,new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639),cljs.core.PersistentVector.EMPTY),datascript.query.empty_rel(binding)));\nreturn cljs.core.update.cljs$core$IFn$_invoke$arity$4(context__$1,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),datascript.query.collapse_rels,new_rel);\n});\ndatascript.query.rule_QMARK_ = (function datascript$query$rule_QMARK_(context,clause){\nreturn ((cljs.core.sequential_QMARK_(clause)) && (cljs.core.contains_QMARK_(new cljs.core.Keyword(null,\"rules\",\"rules\",1198912366).cljs$core$IFn$_invoke$arity$1(context),((datascript.query.source_QMARK_(cljs.core.first(clause)))?cljs.core.second(clause):cljs.core.first(clause)))));\n});\ndatascript.query.rule_seqid = cljs.core.atom.cljs$core$IFn$_invoke$arity$1((0));\ndatascript.query.expand_rule = (function datascript$query$expand_rule(clause,context,used_args){\nvar vec__25277 = clause;\nvar seq__25278 = cljs.core.seq(vec__25277);\nvar first__25279 = cljs.core.first(seq__25278);\nvar seq__25278__$1 = cljs.core.next(seq__25278);\nvar rule = first__25279;\nvar call_args = seq__25278__$1;\nvar seqid = cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(datascript.query.rule_seqid,cljs.core.inc);\nvar branches = cljs.core.get.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"rules\",\"rules\",1198912366).cljs$core$IFn$_invoke$arity$1(context),rule);\nvar iter__4582__auto__ = (function datascript$query$expand_rule_$_iter__25280(s__25281){\nreturn (new cljs.core.LazySeq(null,(function (){\nvar s__25281__$1 = s__25281;\nwhile(true){\nvar temp__5735__auto__ = cljs.core.seq(s__25281__$1);\nif(temp__5735__auto__){\nvar s__25281__$2 = temp__5735__auto__;\nif(cljs.core.chunked_seq_QMARK_(s__25281__$2)){\nvar c__4580__auto__ = cljs.core.chunk_first(s__25281__$2);\nvar size__4581__auto__ = cljs.core.count(c__4580__auto__);\nvar b__25283 = cljs.core.chunk_buffer(size__4581__auto__);\nif((function (){var i__25282 = (0);\nwhile(true){\nif((i__25282 < size__4581__auto__)){\nvar branch = cljs.core._nth(c__4580__auto__,i__25282);\nvar vec__25284 = branch;\nvar seq__25285 = cljs.core.seq(vec__25284);\nvar first__25286 = cljs.core.first(seq__25285);\nvar seq__25285__$1 = cljs.core.next(seq__25285);\nvar vec__25287 = first__25286;\nvar seq__25288 = cljs.core.seq(vec__25287);\nvar first__25289 = cljs.core.first(seq__25288);\nvar seq__25288__$1 = cljs.core.next(seq__25288);\nvar _ = first__25289;\nvar rule_args = seq__25288__$1;\nvar clauses = seq__25285__$1;\nvar replacements = cljs.core.zipmap(rule_args,call_args);\ncljs.core.chunk_append(b__25283,clojure.walk.postwalk(((function (i__25282,vec__25284,seq__25285,first__25286,seq__25285__$1,vec__25287,seq__25288,first__25289,seq__25288__$1,_,rule_args,clauses,replacements,branch,c__4580__auto__,size__4581__auto__,b__25283,s__25281__$2,temp__5735__auto__,vec__25277,seq__25278,first__25279,seq__25278__$1,rule,call_args,seqid,branches){\nreturn (function (p1__25276_SHARP_){\nif(datascript.query.free_var_QMARK_(p1__25276_SHARP_)){\nvar x__21365__auto__ = (replacements.cljs$core$IFn$_invoke$arity$1 ? replacements.cljs$core$IFn$_invoke$arity$1(p1__25276_SHARP_) : replacements.call(null,p1__25276_SHARP_));\nif((x__21365__auto__ == null)){\nreturn cljs.core.symbol.cljs$core$IFn$_invoke$arity$1([cljs.core.name(p1__25276_SHARP_),\"__auto__\",cljs.core.str.cljs$core$IFn$_invoke$arity$1(seqid)].join(''));\n} else {\nreturn x__21365__auto__;\n}\n} else {\nreturn p1__25276_SHARP_;\n}\n});})(i__25282,vec__25284,seq__25285,first__25286,seq__25285__$1,vec__25287,seq__25288,first__25289,seq__25288__$1,_,rule_args,clauses,replacements,branch,c__4580__auto__,size__4581__auto__,b__25283,s__25281__$2,temp__5735__auto__,vec__25277,seq__25278,first__25279,seq__25278__$1,rule,call_args,seqid,branches))\n,clauses));\n\nvar G__25798 = (i__25282 + (1));\ni__25282 = G__25798;\ncontinue;\n} else {\nreturn true;\n}\nbreak;\n}\n})()){\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25283),datascript$query$expand_rule_$_iter__25280(cljs.core.chunk_rest(s__25281__$2)));\n} else {\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25283),null);\n}\n} else {\nvar branch = cljs.core.first(s__25281__$2);\nvar vec__25290 = branch;\nvar seq__25291 = cljs.core.seq(vec__25290);\nvar first__25292 = cljs.core.first(seq__25291);\nvar seq__25291__$1 = cljs.core.next(seq__25291);\nvar vec__25293 = first__25292;\nvar seq__25294 = cljs.core.seq(vec__25293);\nvar first__25295 = cljs.core.first(seq__25294);\nvar seq__25294__$1 = cljs.core.next(seq__25294);\nvar _ = first__25295;\nvar rule_args = seq__25294__$1;\nvar clauses = seq__25291__$1;\nvar replacements = cljs.core.zipmap(rule_args,call_args);\nreturn cljs.core.cons(clojure.walk.postwalk(((function (vec__25290,seq__25291,first__25292,seq__25291__$1,vec__25293,seq__25294,first__25295,seq__25294__$1,_,rule_args,clauses,replacements,branch,s__25281__$2,temp__5735__auto__,vec__25277,seq__25278,first__25279,seq__25278__$1,rule,call_args,seqid,branches){\nreturn (function (p1__25276_SHARP_){\nif(datascript.query.free_var_QMARK_(p1__25276_SHARP_)){\nvar x__21365__auto__ = (replacements.cljs$core$IFn$_invoke$arity$1 ? replacements.cljs$core$IFn$_invoke$arity$1(p1__25276_SHARP_) : replacements.call(null,p1__25276_SHARP_));\nif((x__21365__auto__ == null)){\nreturn cljs.core.symbol.cljs$core$IFn$_invoke$arity$1([cljs.core.name(p1__25276_SHARP_),\"__auto__\",cljs.core.str.cljs$core$IFn$_invoke$arity$1(seqid)].join(''));\n} else {\nreturn x__21365__auto__;\n}\n} else {\nreturn p1__25276_SHARP_;\n}\n});})(vec__25290,seq__25291,first__25292,seq__25291__$1,vec__25293,seq__25294,first__25295,seq__25294__$1,_,rule_args,clauses,replacements,branch,s__25281__$2,temp__5735__auto__,vec__25277,seq__25278,first__25279,seq__25278__$1,rule,call_args,seqid,branches))\n,clauses),datascript$query$expand_rule_$_iter__25280(cljs.core.rest(s__25281__$2)));\n}\n} else {\nreturn null;\n}\nbreak;\n}\n}),null,null));\n});\nreturn iter__4582__auto__(branches);\n});\ndatascript.query.remove_pairs = (function datascript$query$remove_pairs(xs,ys){\nvar pairs = cljs.core.remove.cljs$core$IFn$_invoke$arity$2((function (p__25296){\nvar vec__25297 = p__25296;\nvar x = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25297,(0),null);\nvar y = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25297,(1),null);\nreturn cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(x,y);\n}),cljs.core.map.cljs$core$IFn$_invoke$arity$3(cljs.core.vector,xs,ys));\nreturn new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.first,pairs),cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.second,pairs)], null);\n});\ndatascript.query.rule_gen_guards = (function datascript$query$rule_gen_guards(rule_clause,used_args){\nvar vec__25301 = rule_clause;\nvar seq__25302 = cljs.core.seq(vec__25301);\nvar first__25303 = cljs.core.first(seq__25302);\nvar seq__25302__$1 = cljs.core.next(seq__25302);\nvar rule = first__25303;\nvar call_args = seq__25302__$1;\nvar prev_call_args = cljs.core.get.cljs$core$IFn$_invoke$arity$2(used_args,rule);\nvar iter__4582__auto__ = (function datascript$query$rule_gen_guards_$_iter__25304(s__25305){\nreturn (new cljs.core.LazySeq(null,(function (){\nvar s__25305__$1 = s__25305;\nwhile(true){\nvar temp__5735__auto__ = cljs.core.seq(s__25305__$1);\nif(temp__5735__auto__){\nvar s__25305__$2 = temp__5735__auto__;\nif(cljs.core.chunked_seq_QMARK_(s__25305__$2)){\nvar c__4580__auto__ = cljs.core.chunk_first(s__25305__$2);\nvar size__4581__auto__ = cljs.core.count(c__4580__auto__);\nvar b__25307 = cljs.core.chunk_buffer(size__4581__auto__);\nif((function (){var i__25306 = (0);\nwhile(true){\nif((i__25306 < size__4581__auto__)){\nvar prev_args = cljs.core._nth(c__4580__auto__,i__25306);\nvar vec__25308 = datascript.query.remove_pairs(call_args,prev_args);\nvar call_args__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25308,(0),null);\nvar prev_args__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25308,(1),null);\ncljs.core.chunk_append(b__25307,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.concat.cljs$core$IFn$_invoke$arity$variadic(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"-differ?\",\"-differ?\",1465687357,null)], null),call_args__$1,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([prev_args__$1], 0))], null));\n\nvar G__25800 = (i__25306 + (1));\ni__25306 = G__25800;\ncontinue;\n} else {\nreturn true;\n}\nbreak;\n}\n})()){\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25307),datascript$query$rule_gen_guards_$_iter__25304(cljs.core.chunk_rest(s__25305__$2)));\n} else {\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25307),null);\n}\n} else {\nvar prev_args = cljs.core.first(s__25305__$2);\nvar vec__25311 = datascript.query.remove_pairs(call_args,prev_args);\nvar call_args__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25311,(0),null);\nvar prev_args__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25311,(1),null);\nreturn cljs.core.cons(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.concat.cljs$core$IFn$_invoke$arity$variadic(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"-differ?\",\"-differ?\",1465687357,null)], null),call_args__$1,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([prev_args__$1], 0))], null),datascript$query$rule_gen_guards_$_iter__25304(cljs.core.rest(s__25305__$2)));\n}\n} else {\nreturn null;\n}\nbreak;\n}\n}),null,null));\n});\nreturn iter__4582__auto__(prev_call_args);\n});\ndatascript.query.walk_collect = (function datascript$query$walk_collect(form,pred){\nvar res = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentVector.EMPTY);\nclojure.walk.postwalk((function (p1__25314_SHARP_){\nif(cljs.core.truth_((pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(p1__25314_SHARP_) : pred.call(null,p1__25314_SHARP_)))){\ncljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$3(res,cljs.core.conj,p1__25314_SHARP_);\n} else {\n}\n\nreturn p1__25314_SHARP_;\n}),form);\n\nreturn cljs.core.deref(res);\n});\ndatascript.query.collect_vars = (function datascript$query$collect_vars(clause){\nreturn cljs.core.set(datascript.query.walk_collect(clause,datascript.query.free_var_QMARK_));\n});\ndatascript.query.split_guards = (function datascript$query$split_guards(clauses,guards){\nvar bound_vars = datascript.query.collect_vars(clauses);\nvar pred = (function (p__25315){\nvar vec__25316 = p__25315;\nvar vec__25319 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25316,(0),null);\nvar seq__25320 = cljs.core.seq(vec__25319);\nvar first__25321 = cljs.core.first(seq__25320);\nvar seq__25320__$1 = cljs.core.next(seq__25320);\nvar _ = first__25321;\nvar vars = seq__25320__$1;\nreturn cljs.core.every_QMARK_(bound_vars,vars);\n});\nreturn new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.filter.cljs$core$IFn$_invoke$arity$2(pred,guards),cljs.core.remove.cljs$core$IFn$_invoke$arity$2(pred,guards)], null);\n});\ndatascript.query.solve_rule = (function datascript$query$solve_rule(context,clause){\nvar final_attrs = cljs.core.filter.cljs$core$IFn$_invoke$arity$2(datascript.query.free_var_QMARK_,clause);\nvar final_attrs_map = cljs.core.zipmap(final_attrs,cljs.core.range.cljs$core$IFn$_invoke$arity$0());\nvar solve = (function (prefix_context,clauses){\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(datascript.query._resolve_clause,prefix_context,clauses);\n});\nvar empty_rels_QMARK_ = (function (context__$1){\nreturn cljs.core.some((function (p1__25322_SHARP_){\nreturn cljs.core.empty_QMARK_(new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639).cljs$core$IFn$_invoke$arity$1(p1__25322_SHARP_));\n}),new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185).cljs$core$IFn$_invoke$arity$1(context__$1));\n});\nvar stack = (new cljs.core.List(null,new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,\"prefix-clauses\",\"prefix-clauses\",1294180028),cljs.core.PersistentVector.EMPTY,new cljs.core.Keyword(null,\"prefix-context\",\"prefix-context\",-1269613591),context,new cljs.core.Keyword(null,\"clauses\",\"clauses\",1454841241),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [clause], null),new cljs.core.Keyword(null,\"used-args\",\"used-args\",23596256),cljs.core.PersistentArrayMap.EMPTY,new cljs.core.Keyword(null,\"pending-guards\",\"pending-guards\",-1255527308),cljs.core.PersistentArrayMap.EMPTY], null),null,(1),null));\nvar rel = (new datascript.query.Relation(final_attrs_map,cljs.core.PersistentVector.EMPTY,null,null,null));\nwhile(true){\nvar temp__5737__auto__ = cljs.core.first(stack);\nif((temp__5737__auto__ == null)){\nreturn rel;\n} else {\nvar frame = temp__5737__auto__;\nvar vec__25341 = cljs.core.split_with(((function (stack,rel,frame,temp__5737__auto__,final_attrs,final_attrs_map,solve,empty_rels_QMARK_){\nreturn (function (p1__25323_SHARP_){\nreturn (!(datascript.query.rule_QMARK_(context,p1__25323_SHARP_)));\n});})(stack,rel,frame,temp__5737__auto__,final_attrs,final_attrs_map,solve,empty_rels_QMARK_))\n,new cljs.core.Keyword(null,\"clauses\",\"clauses\",1454841241).cljs$core$IFn$_invoke$arity$1(frame));\nvar clauses = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25341,(0),null);\nvar vec__25344 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25341,(1),null);\nvar seq__25345 = cljs.core.seq(vec__25344);\nvar first__25346 = cljs.core.first(seq__25345);\nvar seq__25345__$1 = cljs.core.next(seq__25345);\nvar rule_clause = first__25346;\nvar next_clauses = seq__25345__$1;\nif((rule_clause == null)){\nvar context__$1 = solve(new cljs.core.Keyword(null,\"prefix-context\",\"prefix-context\",-1269613591).cljs$core$IFn$_invoke$arity$1(frame),clauses);\nvar tuples = (datascript.query._collect.cljs$core$IFn$_invoke$arity$2 ? datascript.query._collect.cljs$core$IFn$_invoke$arity$2(context__$1,final_attrs) : datascript.query._collect.call(null,context__$1,final_attrs));\nvar new_rel = (new datascript.query.Relation(final_attrs_map,tuples,null,null,null));\nvar G__25802 = cljs.core.next(stack);\nvar G__25803 = datascript.query.sum_rel(rel,new_rel);\nstack = G__25802;\nrel = G__25803;\ncontinue;\n} else {\nvar vec__25347 = rule_clause;\nvar seq__25348 = cljs.core.seq(vec__25347);\nvar first__25349 = cljs.core.first(seq__25348);\nvar seq__25348__$1 = cljs.core.next(seq__25348);\nvar rule = first__25349;\nvar call_args = seq__25348__$1;\nvar guards = datascript.query.rule_gen_guards(rule_clause,new cljs.core.Keyword(null,\"used-args\",\"used-args\",23596256).cljs$core$IFn$_invoke$arity$1(frame));\nvar vec__25350 = datascript.query.split_guards(cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"prefix-clauses\",\"prefix-clauses\",1294180028).cljs$core$IFn$_invoke$arity$1(frame),clauses),cljs.core.concat.cljs$core$IFn$_invoke$arity$2(guards,new cljs.core.Keyword(null,\"pending-guards\",\"pending-guards\",-1255527308).cljs$core$IFn$_invoke$arity$1(frame)));\nvar active_gs = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25350,(0),null);\nvar pending_gs = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25350,(1),null);\nif(cljs.core.truth_(cljs.core.some(((function (stack,rel,vec__25347,seq__25348,first__25349,seq__25348__$1,rule,call_args,guards,vec__25350,active_gs,pending_gs,vec__25341,clauses,vec__25344,seq__25345,first__25346,seq__25345__$1,rule_clause,next_clauses,frame,temp__5737__auto__,final_attrs,final_attrs_map,solve,empty_rels_QMARK_){\nreturn (function (p1__25324_SHARP_){\nreturn cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(p1__25324_SHARP_,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.list(new cljs.core.Symbol(null,\"-differ?\",\"-differ?\",1465687357,null))], null));\n});})(stack,rel,vec__25347,seq__25348,first__25349,seq__25348__$1,rule,call_args,guards,vec__25350,active_gs,pending_gs,vec__25341,clauses,vec__25344,seq__25345,first__25346,seq__25345__$1,rule_clause,next_clauses,frame,temp__5737__auto__,final_attrs,final_attrs_map,solve,empty_rels_QMARK_))\n,active_gs))){\nvar G__25804 = cljs.core.next(stack);\nvar G__25805 = rel;\nstack = G__25804;\nrel = G__25805;\ncontinue;\n} else {\nvar prefix_clauses = cljs.core.concat.cljs$core$IFn$_invoke$arity$2(clauses,active_gs);\nvar prefix_context = solve(new cljs.core.Keyword(null,\"prefix-context\",\"prefix-context\",-1269613591).cljs$core$IFn$_invoke$arity$1(frame),prefix_clauses);\nif(cljs.core.truth_(empty_rels_QMARK_(prefix_context))){\nvar G__25806 = cljs.core.next(stack);\nvar G__25807 = rel;\nstack = G__25806;\nrel = G__25807;\ncontinue;\n} else {\nvar used_args = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(new cljs.core.Keyword(null,\"used-args\",\"used-args\",23596256).cljs$core$IFn$_invoke$arity$1(frame),rule,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.get.cljs$core$IFn$_invoke$arity$3(new cljs.core.Keyword(null,\"used-args\",\"used-args\",23596256).cljs$core$IFn$_invoke$arity$1(frame),rule,cljs.core.PersistentVector.EMPTY),call_args));\nvar branches = datascript.query.expand_rule(rule_clause,context,used_args);\nvar G__25808 = cljs.core.concat.cljs$core$IFn$_invoke$arity$2((function (){var iter__4582__auto__ = ((function (stack,rel,used_args,branches,prefix_clauses,prefix_context,vec__25347,seq__25348,first__25349,seq__25348__$1,rule,call_args,guards,vec__25350,active_gs,pending_gs,vec__25341,clauses,vec__25344,seq__25345,first__25346,seq__25345__$1,rule_clause,next_clauses,frame,temp__5737__auto__,final_attrs,final_attrs_map,solve,empty_rels_QMARK_){\nreturn (function datascript$query$solve_rule_$_iter__25353(s__25354){\nreturn (new cljs.core.LazySeq(null,((function (stack,rel,used_args,branches,prefix_clauses,prefix_context,vec__25347,seq__25348,first__25349,seq__25348__$1,rule,call_args,guards,vec__25350,active_gs,pending_gs,vec__25341,clauses,vec__25344,seq__25345,first__25346,seq__25345__$1,rule_clause,next_clauses,frame,temp__5737__auto__,final_attrs,final_attrs_map,solve,empty_rels_QMARK_){\nreturn (function (){\nvar s__25354__$1 = s__25354;\nwhile(true){\nvar temp__5735__auto__ = cljs.core.seq(s__25354__$1);\nif(temp__5735__auto__){\nvar s__25354__$2 = temp__5735__auto__;\nif(cljs.core.chunked_seq_QMARK_(s__25354__$2)){\nvar c__4580__auto__ = cljs.core.chunk_first(s__25354__$2);\nvar size__4581__auto__ = cljs.core.count(c__4580__auto__);\nvar b__25356 = cljs.core.chunk_buffer(size__4581__auto__);\nif((function (){var i__25355 = (0);\nwhile(true){\nif((i__25355 < size__4581__auto__)){\nvar branch = cljs.core._nth(c__4580__auto__,i__25355);\ncljs.core.chunk_append(b__25356,new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,\"prefix-clauses\",\"prefix-clauses\",1294180028),prefix_clauses,new cljs.core.Keyword(null,\"prefix-context\",\"prefix-context\",-1269613591),prefix_context,new cljs.core.Keyword(null,\"clauses\",\"clauses\",1454841241),datascript.query.concatv.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([branch,next_clauses], 0)),new cljs.core.Keyword(null,\"used-args\",\"used-args\",23596256),used_args,new cljs.core.Keyword(null,\"pending-guards\",\"pending-guards\",-1255527308),pending_gs], null));\n\nvar G__25810 = (i__25355 + (1));\ni__25355 = G__25810;\ncontinue;\n} else {\nreturn true;\n}\nbreak;\n}\n})()){\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25356),datascript$query$solve_rule_$_iter__25353(cljs.core.chunk_rest(s__25354__$2)));\n} else {\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25356),null);\n}\n} else {\nvar branch = cljs.core.first(s__25354__$2);\nreturn cljs.core.cons(new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,\"prefix-clauses\",\"prefix-clauses\",1294180028),prefix_clauses,new cljs.core.Keyword(null,\"prefix-context\",\"prefix-context\",-1269613591),prefix_context,new cljs.core.Keyword(null,\"clauses\",\"clauses\",1454841241),datascript.query.concatv.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([branch,next_clauses], 0)),new cljs.core.Keyword(null,\"used-args\",\"used-args\",23596256),used_args,new cljs.core.Keyword(null,\"pending-guards\",\"pending-guards\",-1255527308),pending_gs], null),datascript$query$solve_rule_$_iter__25353(cljs.core.rest(s__25354__$2)));\n}\n} else {\nreturn null;\n}\nbreak;\n}\n});})(stack,rel,used_args,branches,prefix_clauses,prefix_context,vec__25347,seq__25348,first__25349,seq__25348__$1,rule,call_args,guards,vec__25350,active_gs,pending_gs,vec__25341,clauses,vec__25344,seq__25345,first__25346,seq__25345__$1,rule_clause,next_clauses,frame,temp__5737__auto__,final_attrs,final_attrs_map,solve,empty_rels_QMARK_))\n,null,null));\n});})(stack,rel,used_args,branches,prefix_clauses,prefix_context,vec__25347,seq__25348,first__25349,seq__25348__$1,rule,call_args,guards,vec__25350,active_gs,pending_gs,vec__25341,clauses,vec__25344,seq__25345,first__25346,seq__25345__$1,rule_clause,next_clauses,frame,temp__5737__auto__,final_attrs,final_attrs_map,solve,empty_rels_QMARK_))\n;\nreturn iter__4582__auto__(branches);\n})(),cljs.core.next(stack));\nvar G__25809 = rel;\nstack = G__25808;\nrel = G__25809;\ncontinue;\n}\n}\n}\n}\nbreak;\n}\n});\ndatascript.query.resolve_pattern_lookup_refs = (function datascript$query$resolve_pattern_lookup_refs(source,pattern){\nif((((!((source == null))))?((((false) || ((cljs.core.PROTOCOL_SENTINEL === source.datascript$db$IDB$))))?true:(((!source.cljs$lang$protocol_mask$partition$))?cljs.core.native_satisfies_QMARK_(datascript.db.IDB,source):false)):cljs.core.native_satisfies_QMARK_(datascript.db.IDB,source))){\nvar vec__25359 = pattern;\nvar e = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25359,(0),null);\nvar a = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25359,(1),null);\nvar v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25359,(2),null);\nvar tx = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25359,(3),null);\nreturn cljs.core.subvec.cljs$core$IFn$_invoke$arity$3(new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [(cljs.core.truth_((function (){var or__4185__auto__ = datascript.query.lookup_ref_QMARK_(e);\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nreturn datascript.query.attr_QMARK_(e);\n}\n})())?datascript.db.entid_strict(source,e):e),a,(cljs.core.truth_((function (){var and__4174__auto__ = v;\nif(cljs.core.truth_(and__4174__auto__)){\nif(datascript.query.attr_QMARK_(a)){\nif(datascript.db.ref_QMARK_(source,a)){\nvar or__4185__auto__ = datascript.query.lookup_ref_QMARK_(v);\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nreturn datascript.query.attr_QMARK_(v);\n}\n} else {\nreturn false;\n}\n} else {\nreturn false;\n}\n} else {\nreturn and__4174__auto__;\n}\n})())?datascript.db.entid_strict(source,v):v),(cljs.core.truth_(datascript.query.lookup_ref_QMARK_(tx))?datascript.db.entid_strict(source,tx):tx)], null),(0),cljs.core.count(pattern));\n} else {\nreturn pattern;\n}\n});\ndatascript.query.dynamic_lookup_attrs = (function datascript$query$dynamic_lookup_attrs(source,pattern){\nvar vec__25362 = pattern;\nvar e = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25362,(0),null);\nvar a = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25362,(1),null);\nvar v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25362,(2),null);\nvar tx = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25362,(3),null);\nvar G__25365 = cljs.core.PersistentHashSet.EMPTY;\nvar G__25365__$1 = ((datascript.query.free_var_QMARK_(e))?cljs.core.conj.cljs$core$IFn$_invoke$arity$2(G__25365,e):G__25365);\nvar G__25365__$2 = ((datascript.query.free_var_QMARK_(tx))?cljs.core.conj.cljs$core$IFn$_invoke$arity$2(G__25365__$1,tx):G__25365__$1);\nif(((datascript.query.free_var_QMARK_(v)) && ((!(datascript.query.free_var_QMARK_(a)))) && (datascript.db.ref_QMARK_(source,a)))){\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$2(G__25365__$2,v);\n} else {\nreturn G__25365__$2;\n}\n});\ndatascript.query.limit_rel = (function datascript$query$limit_rel(rel,vars){\nvar temp__5739__auto__ = cljs.core.not_empty(cljs.core.select_keys(new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(rel),vars));\nif((temp__5739__auto__ == null)){\nreturn null;\n} else {\nvar attrs_SINGLEQUOTE_ = temp__5739__auto__;\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(rel,new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713),attrs_SINGLEQUOTE_);\n}\n});\ndatascript.query.limit_context = (function datascript$query$limit_context(context,vars){\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(context,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),cljs.core.keep.cljs$core$IFn$_invoke$arity$2((function (p1__25367_SHARP_){\nreturn datascript.query.limit_rel(p1__25367_SHARP_,vars);\n}),new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185).cljs$core$IFn$_invoke$arity$1(context)));\n});\ndatascript.query.bound_vars = (function datascript$query$bound_vars(context){\nreturn cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentHashSet.EMPTY,cljs.core.mapcat.cljs$core$IFn$_invoke$arity$variadic((function (p1__25368_SHARP_){\nreturn cljs.core.keys(new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(p1__25368_SHARP_));\n}),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185).cljs$core$IFn$_invoke$arity$1(context)], 0)));\n});\ndatascript.query.check_bound = (function datascript$query$check_bound(bound,vars,form){\nif(clojure.set.subset_QMARK_(vars,bound)){\nreturn null;\n} else {\nvar missing = clojure.set.difference.cljs$core$IFn$_invoke$arity$2(cljs.core.set(vars),bound);\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Insufficient bindings: \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([missing], 0)),\" not bound in \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([form], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"query\",\"where\",\"query/where\",-1935159429),new cljs.core.Keyword(null,\"form\",\"form\",-1624062471),form,new cljs.core.Keyword(null,\"vars\",\"vars\",-2046957217),missing], null));\n}\n});\ndatascript.query.check_free_same = (function datascript$query$check_free_same(bound,branches,form){\nvar free = cljs.core.mapv.cljs$core$IFn$_invoke$arity$2((function (p1__25369_SHARP_){\nreturn clojure.set.difference.cljs$core$IFn$_invoke$arity$2(datascript.query.collect_vars(p1__25369_SHARP_),bound);\n}),branches);\nif(cljs.core.truth_(cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core._EQ_,free))){\nreturn null;\n} else {\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"All clauses in 'or' must use same set of free vars, had \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([free], 0)),\" in \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([form], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"query\",\"where\",\"query/where\",-1935159429),new cljs.core.Keyword(null,\"form\",\"form\",-1624062471),form,new cljs.core.Keyword(null,\"vars\",\"vars\",-2046957217),free], null));\n}\n});\ndatascript.query.check_free_subset = (function datascript$query$check_free_subset(bound,vars,branches){\nvar free = cljs.core.set(cljs.core.remove.cljs$core$IFn$_invoke$arity$2(bound,vars));\nvar seq__25370 = cljs.core.seq(branches);\nvar chunk__25371 = null;\nvar count__25372 = (0);\nvar i__25373 = (0);\nwhile(true){\nif((i__25373 < count__25372)){\nvar branch = chunk__25371.cljs$core$IIndexed$_nth$arity$2(null,i__25373);\nvar temp__5739__auto___25827 = cljs.core.not_empty(clojure.set.difference.cljs$core$IFn$_invoke$arity$2(free,datascript.query.collect_vars(branch)));\nif((temp__5739__auto___25827 == null)){\n} else {\nvar missing_25830 = temp__5739__auto___25827;\ncljs.core.prn.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([branch,bound,vars,free], 0));\n\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"All clauses in 'or' must use same set of free vars, had \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([missing_25830], 0)),\" not bound in \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([branch], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"query\",\"where\",\"query/where\",-1935159429),new cljs.core.Keyword(null,\"form\",\"form\",-1624062471),branch,new cljs.core.Keyword(null,\"vars\",\"vars\",-2046957217),missing_25830], null));\n}\n\n\nvar G__25831 = seq__25370;\nvar G__25832 = chunk__25371;\nvar G__25833 = count__25372;\nvar G__25834 = (i__25373 + (1));\nseq__25370 = G__25831;\nchunk__25371 = G__25832;\ncount__25372 = G__25833;\ni__25373 = G__25834;\ncontinue;\n} else {\nvar temp__5735__auto__ = cljs.core.seq(seq__25370);\nif(temp__5735__auto__){\nvar seq__25370__$1 = temp__5735__auto__;\nif(cljs.core.chunked_seq_QMARK_(seq__25370__$1)){\nvar c__4609__auto__ = cljs.core.chunk_first(seq__25370__$1);\nvar G__25835 = cljs.core.chunk_rest(seq__25370__$1);\nvar G__25836 = c__4609__auto__;\nvar G__25837 = cljs.core.count(c__4609__auto__);\nvar G__25838 = (0);\nseq__25370 = G__25835;\nchunk__25371 = G__25836;\ncount__25372 = G__25837;\ni__25373 = G__25838;\ncontinue;\n} else {\nvar branch = cljs.core.first(seq__25370__$1);\nvar temp__5739__auto___25839 = cljs.core.not_empty(clojure.set.difference.cljs$core$IFn$_invoke$arity$2(free,datascript.query.collect_vars(branch)));\nif((temp__5739__auto___25839 == null)){\n} else {\nvar missing_25840 = temp__5739__auto___25839;\ncljs.core.prn.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([branch,bound,vars,free], 0));\n\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"All clauses in 'or' must use same set of free vars, had \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([missing_25840], 0)),\" not bound in \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([branch], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"query\",\"where\",\"query/where\",-1935159429),new cljs.core.Keyword(null,\"form\",\"form\",-1624062471),branch,new cljs.core.Keyword(null,\"vars\",\"vars\",-2046957217),missing_25840], null));\n}\n\n\nvar G__25841 = cljs.core.next(seq__25370__$1);\nvar G__25842 = null;\nvar G__25843 = (0);\nvar G__25844 = (0);\nseq__25370 = G__25841;\nchunk__25371 = G__25842;\ncount__25372 = G__25843;\ni__25373 = G__25844;\ncontinue;\n}\n} else {\nreturn null;\n}\n}\nbreak;\n}\n});\ndatascript.query._resolve_clause = (function datascript$query$_resolve_clause(var_args){\nvar G__25380 = arguments.length;\nswitch (G__25380) {\ncase 2:\nreturn datascript.query._resolve_clause.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));\n\nbreak;\ncase 3:\nreturn datascript.query._resolve_clause.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));\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(datascript.query._resolve_clause.cljs$core$IFn$_invoke$arity$2 = (function (context,clause){\nreturn datascript.query._resolve_clause.cljs$core$IFn$_invoke$arity$3(context,clause,clause);\n}));\n\n(datascript.query._resolve_clause.cljs$core$IFn$_invoke$arity$3 = (function (context,clause,orig_clause){\nwhile(true){\nvar pred__25381 = datascript.query.looks_like_QMARK_;\nvar expr__25382 = clause;\nif(cljs.core.truth_((function (){var G__25384 = new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.symbol_QMARK_,new cljs.core.Symbol(null,\"*\",\"*\",345799209,null)], null)], null);\nvar G__25385 = expr__25382;\nreturn (pred__25381.cljs$core$IFn$_invoke$arity$2 ? pred__25381.cljs$core$IFn$_invoke$arity$2(G__25384,G__25385) : pred__25381.call(null,G__25384,G__25385));\n})())){\nreturn datascript.query.filter_by_pred(context,clause);\n} else {\nif(cljs.core.truth_((function (){var G__25386 = new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.symbol_QMARK_,new cljs.core.Symbol(null,\"*\",\"*\",345799209,null)], null),new cljs.core.Symbol(null,\"_\",\"_\",-1201019570,null)], null);\nvar G__25387 = expr__25382;\nreturn (pred__25381.cljs$core$IFn$_invoke$arity$2 ? pred__25381.cljs$core$IFn$_invoke$arity$2(G__25386,G__25387) : pred__25381.call(null,G__25386,G__25387));\n})())){\nreturn datascript.query.bind_by_fn(context,clause);\n} else {\nif(cljs.core.truth_((function (){var G__25388 = new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [datascript.query.source_QMARK_,new cljs.core.Symbol(null,\"*\",\"*\",345799209,null)], null);\nvar G__25389 = expr__25382;\nreturn (pred__25381.cljs$core$IFn$_invoke$arity$2 ? pred__25381.cljs$core$IFn$_invoke$arity$2(G__25388,G__25389) : pred__25381.call(null,G__25388,G__25389));\n})())){\nvar vec__25390 = clause;\nvar seq__25391 = cljs.core.seq(vec__25390);\nvar first__25392 = cljs.core.first(seq__25391);\nvar seq__25391__$1 = cljs.core.next(seq__25391);\nvar source_sym = first__25392;\nvar rest = seq__25391__$1;\nvar _STAR_implicit_source_STAR__orig_val__25393 = datascript.query._STAR_implicit_source_STAR_;\nvar _STAR_implicit_source_STAR__temp_val__25394 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"sources\",\"sources\",-321166424).cljs$core$IFn$_invoke$arity$1(context),source_sym);\n(datascript.query._STAR_implicit_source_STAR_ = _STAR_implicit_source_STAR__temp_val__25394);\n\ntry{return datascript.query._resolve_clause.cljs$core$IFn$_invoke$arity$3(context,rest,clause);\n}finally {(datascript.query._STAR_implicit_source_STAR_ = _STAR_implicit_source_STAR__orig_val__25393);\n}} else {\nif(cljs.core.truth_((function (){var G__25395 = new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"or\",\"or\",1876275696,null),new cljs.core.Symbol(null,\"*\",\"*\",345799209,null)], null);\nvar G__25396 = expr__25382;\nreturn (pred__25381.cljs$core$IFn$_invoke$arity$2 ? pred__25381.cljs$core$IFn$_invoke$arity$2(G__25395,G__25396) : pred__25381.call(null,G__25395,G__25396));\n})())){\nvar vec__25397 = clause;\nvar seq__25398 = cljs.core.seq(vec__25397);\nvar first__25399 = cljs.core.first(seq__25398);\nvar seq__25398__$1 = cljs.core.next(seq__25398);\nvar _ = first__25399;\nvar branches = seq__25398__$1;\nvar ___$1 = datascript.query.check_free_same(datascript.query.bound_vars(context),branches,clause);\nvar contexts = cljs.core.map.cljs$core$IFn$_invoke$arity$2(((function (context,clause,orig_clause,vec__25397,seq__25398,first__25399,seq__25398__$1,_,branches,___$1,pred__25381,expr__25382){\nreturn (function (p1__25375_SHARP_){\nreturn (datascript.query.resolve_clause.cljs$core$IFn$_invoke$arity$2 ? datascript.query.resolve_clause.cljs$core$IFn$_invoke$arity$2(context,p1__25375_SHARP_) : datascript.query.resolve_clause.call(null,context,p1__25375_SHARP_));\n});})(context,clause,orig_clause,vec__25397,seq__25398,first__25399,seq__25398__$1,_,branches,___$1,pred__25381,expr__25382))\n,branches);\nvar rels = cljs.core.map.cljs$core$IFn$_invoke$arity$2(((function (context,clause,orig_clause,vec__25397,seq__25398,first__25399,seq__25398__$1,_,branches,___$1,contexts,pred__25381,expr__25382){\nreturn (function (p1__25376_SHARP_){\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.hash_join,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185).cljs$core$IFn$_invoke$arity$1(p1__25376_SHARP_));\n});})(context,clause,orig_clause,vec__25397,seq__25398,first__25399,seq__25398__$1,_,branches,___$1,contexts,pred__25381,expr__25382))\n,contexts);\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(cljs.core.first(contexts),new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.sum_rel,rels)], null));\n} else {\nif(cljs.core.truth_((function (){var G__25400 = new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"or-join\",\"or-join\",591375469,null),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"*\",\"*\",345799209,null)], null),new cljs.core.Symbol(null,\"*\",\"*\",345799209,null)], null),new cljs.core.Symbol(null,\"*\",\"*\",345799209,null)], null);\nvar G__25401 = expr__25382;\nreturn (pred__25381.cljs$core$IFn$_invoke$arity$2 ? pred__25381.cljs$core$IFn$_invoke$arity$2(G__25400,G__25401) : pred__25381.call(null,G__25400,G__25401));\n})())){\nvar vec__25403 = clause;\nvar seq__25404 = cljs.core.seq(vec__25403);\nvar first__25405 = cljs.core.first(seq__25404);\nvar seq__25404__$1 = cljs.core.next(seq__25404);\nvar _ = first__25405;\nvar first__25405__$1 = cljs.core.first(seq__25404__$1);\nvar seq__25404__$2 = cljs.core.next(seq__25404__$1);\nvar vec__25406 = first__25405__$1;\nvar seq__25407 = cljs.core.seq(vec__25406);\nvar first__25408 = cljs.core.first(seq__25407);\nvar seq__25407__$1 = cljs.core.next(seq__25407);\nvar req_vars = first__25408;\nvar vars = seq__25407__$1;\nvar branches = seq__25404__$2;\nvar bound = datascript.query.bound_vars(context);\ndatascript.query.check_bound(bound,req_vars,orig_clause);\n\ndatascript.query.check_free_subset(bound,vars,branches);\n\nvar G__25847 = context;\nvar G__25848 = cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$3(new cljs.core.Symbol(null,\"or-join\",\"or-join\",591375469,null),cljs.core.concat.cljs$core$IFn$_invoke$arity$2(req_vars,vars),branches);\nvar G__25849 = clause;\ncontext = G__25847;\nclause = G__25848;\norig_clause = G__25849;\ncontinue;\n} else {\nif(cljs.core.truth_((function (){var G__25409 = new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"or-join\",\"or-join\",591375469,null),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"*\",\"*\",345799209,null)], null),new cljs.core.Symbol(null,\"*\",\"*\",345799209,null)], null);\nvar G__25410 = expr__25382;\nreturn (pred__25381.cljs$core$IFn$_invoke$arity$2 ? pred__25381.cljs$core$IFn$_invoke$arity$2(G__25409,G__25410) : pred__25381.call(null,G__25409,G__25410));\n})())){\nvar vec__25411 = clause;\nvar seq__25412 = cljs.core.seq(vec__25411);\nvar first__25413 = cljs.core.first(seq__25412);\nvar seq__25412__$1 = cljs.core.next(seq__25412);\nvar _ = first__25413;\nvar first__25413__$1 = cljs.core.first(seq__25412__$1);\nvar seq__25412__$2 = cljs.core.next(seq__25412__$1);\nvar vars = first__25413__$1;\nvar branches = seq__25412__$2;\nvar vars__$1 = cljs.core.set(vars);\nvar ___$1 = datascript.query.check_free_subset(datascript.query.bound_vars(context),vars__$1,branches);\nvar join_context = datascript.query.limit_context(context,vars__$1);\nvar contexts = cljs.core.map.cljs$core$IFn$_invoke$arity$2(((function (context,clause,orig_clause,vec__25411,seq__25412,first__25413,seq__25412__$1,_,first__25413__$1,seq__25412__$2,vars,branches,vars__$1,___$1,join_context,pred__25381,expr__25382){\nreturn (function (p1__25377_SHARP_){\nreturn datascript.query.limit_context((datascript.query.resolve_clause.cljs$core$IFn$_invoke$arity$2 ? datascript.query.resolve_clause.cljs$core$IFn$_invoke$arity$2(join_context,p1__25377_SHARP_) : datascript.query.resolve_clause.call(null,join_context,p1__25377_SHARP_)),vars__$1);\n});})(context,clause,orig_clause,vec__25411,seq__25412,first__25413,seq__25412__$1,_,first__25413__$1,seq__25412__$2,vars,branches,vars__$1,___$1,join_context,pred__25381,expr__25382))\n,branches);\nvar rels = cljs.core.map.cljs$core$IFn$_invoke$arity$2(((function (context,clause,orig_clause,vec__25411,seq__25412,first__25413,seq__25412__$1,_,first__25413__$1,seq__25412__$2,vars,branches,vars__$1,___$1,join_context,contexts,pred__25381,expr__25382){\nreturn (function (p1__25378_SHARP_){\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.hash_join,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185).cljs$core$IFn$_invoke$arity$1(p1__25378_SHARP_));\n});})(context,clause,orig_clause,vec__25411,seq__25412,first__25413,seq__25412__$1,_,first__25413__$1,seq__25412__$2,vars,branches,vars__$1,___$1,join_context,contexts,pred__25381,expr__25382))\n,contexts);\nvar sum_rel = cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.sum_rel,rels);\nreturn cljs.core.update.cljs$core$IFn$_invoke$arity$4(context,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),datascript.query.collapse_rels,sum_rel);\n} else {\nif(cljs.core.truth_((function (){var G__25414 = new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"and\",\"and\",668631710,null),new cljs.core.Symbol(null,\"*\",\"*\",345799209,null)], null);\nvar G__25415 = expr__25382;\nreturn (pred__25381.cljs$core$IFn$_invoke$arity$2 ? pred__25381.cljs$core$IFn$_invoke$arity$2(G__25414,G__25415) : pred__25381.call(null,G__25414,G__25415));\n})())){\nvar vec__25416 = clause;\nvar seq__25417 = cljs.core.seq(vec__25416);\nvar first__25418 = cljs.core.first(seq__25417);\nvar seq__25417__$1 = cljs.core.next(seq__25417);\nvar _ = first__25418;\nvar clauses = seq__25417__$1;\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(datascript.query.resolve_clause,context,clauses);\n} else {\nif(cljs.core.truth_((function (){var G__25419 = new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"not\",\"not\",1044554643,null),new cljs.core.Symbol(null,\"*\",\"*\",345799209,null)], null);\nvar G__25420 = expr__25382;\nreturn (pred__25381.cljs$core$IFn$_invoke$arity$2 ? pred__25381.cljs$core$IFn$_invoke$arity$2(G__25419,G__25420) : pred__25381.call(null,G__25419,G__25420));\n})())){\nvar vec__25421 = clause;\nvar seq__25422 = cljs.core.seq(vec__25421);\nvar first__25423 = cljs.core.first(seq__25422);\nvar seq__25422__$1 = cljs.core.next(seq__25422);\nvar _ = first__25423;\nvar clauses = seq__25422__$1;\nvar bound = datascript.query.bound_vars(context);\nvar negation_vars = datascript.query.collect_vars(clauses);\nvar ___$1 = ((cljs.core.empty_QMARK_(clojure.set.intersection.cljs$core$IFn$_invoke$arity$2(bound,negation_vars)))?(function(){throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Insufficient bindings: none of \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([negation_vars], 0)),\" is bound in \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([orig_clause], 0))].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"query\",\"where\",\"query/where\",-1935159429),new cljs.core.Keyword(null,\"form\",\"form\",-1624062471),orig_clause], null))})():null);\nvar context_SINGLEQUOTE_ = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(context,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.hash_join,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185).cljs$core$IFn$_invoke$arity$1(context))], null));\nvar negation_context = cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(datascript.query.resolve_clause,context_SINGLEQUOTE_,clauses);\nvar negation = datascript.query.subtract_rel(datascript.query.single(new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185).cljs$core$IFn$_invoke$arity$1(context_SINGLEQUOTE_)),cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.hash_join,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185).cljs$core$IFn$_invoke$arity$1(negation_context)));\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(context_SINGLEQUOTE_,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [negation], null));\n} else {\nif(cljs.core.truth_((function (){var G__25424 = new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"not-join\",\"not-join\",-645515756,null),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"*\",\"*\",345799209,null)], null),new cljs.core.Symbol(null,\"*\",\"*\",345799209,null)], null);\nvar G__25425 = expr__25382;\nreturn (pred__25381.cljs$core$IFn$_invoke$arity$2 ? pred__25381.cljs$core$IFn$_invoke$arity$2(G__25424,G__25425) : pred__25381.call(null,G__25424,G__25425));\n})())){\nvar vec__25426 = clause;\nvar seq__25427 = cljs.core.seq(vec__25426);\nvar first__25428 = cljs.core.first(seq__25427);\nvar seq__25427__$1 = cljs.core.next(seq__25427);\nvar _ = first__25428;\nvar first__25428__$1 = cljs.core.first(seq__25427__$1);\nvar seq__25427__$2 = cljs.core.next(seq__25427__$1);\nvar vars = first__25428__$1;\nvar clauses = seq__25427__$2;\nvar bound = datascript.query.bound_vars(context);\nvar ___$1 = datascript.query.check_bound(bound,vars,orig_clause);\nvar context_SINGLEQUOTE_ = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(context,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.hash_join,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185).cljs$core$IFn$_invoke$arity$1(context))], null));\nvar join_context = datascript.query.limit_context(context_SINGLEQUOTE_,vars);\nvar negation_context = datascript.query.limit_context(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(datascript.query.resolve_clause,join_context,clauses),vars);\nvar negation = datascript.query.subtract_rel(datascript.query.single(new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185).cljs$core$IFn$_invoke$arity$1(context_SINGLEQUOTE_)),cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.hash_join,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185).cljs$core$IFn$_invoke$arity$1(negation_context)));\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(context_SINGLEQUOTE_,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [negation], null));\n} else {\nif(cljs.core.truth_((function (){var G__25429 = new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"*\",\"*\",345799209,null)], null);\nvar G__25430 = expr__25382;\nreturn (pred__25381.cljs$core$IFn$_invoke$arity$2 ? pred__25381.cljs$core$IFn$_invoke$arity$2(G__25429,G__25430) : pred__25381.call(null,G__25429,G__25430));\n})())){\nvar source = datascript.query._STAR_implicit_source_STAR_;\nvar pattern = datascript.query.resolve_pattern_lookup_refs(source,clause);\nvar relation = datascript.query.lookup_pattern(source,pattern);\nvar _STAR_lookup_attrs_STAR__orig_val__25431 = datascript.query._STAR_lookup_attrs_STAR_;\nvar _STAR_lookup_attrs_STAR__temp_val__25432 = (((((!((source == null))))?((((false) || ((cljs.core.PROTOCOL_SENTINEL === source.datascript$db$IDB$))))?true:(((!source.cljs$lang$protocol_mask$partition$))?cljs.core.native_satisfies_QMARK_(datascript.db.IDB,source):false)):cljs.core.native_satisfies_QMARK_(datascript.db.IDB,source)))?datascript.query.dynamic_lookup_attrs(source,pattern):datascript.query._STAR_lookup_attrs_STAR_);\n(datascript.query._STAR_lookup_attrs_STAR_ = _STAR_lookup_attrs_STAR__temp_val__25432);\n\ntry{return cljs.core.update.cljs$core$IFn$_invoke$arity$4(context,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),datascript.query.collapse_rels,relation);\n}finally {(datascript.query._STAR_lookup_attrs_STAR_ = _STAR_lookup_attrs_STAR__orig_val__25431);\n}} else {\nthrow (new Error([\"No matching clause: \",cljs.core.str.cljs$core$IFn$_invoke$arity$1(expr__25382)].join('')));\n}\n}\n}\n}\n}\n}\n}\n}\n}\n}\nbreak;\n}\n}));\n\n(datascript.query._resolve_clause.cljs$lang$maxFixedArity = 3);\n\ndatascript.query.resolve_clause = (function datascript$query$resolve_clause(context,clause){\nif(datascript.query.rule_QMARK_(context,clause)){\nif(datascript.query.source_QMARK_(cljs.core.first(clause))){\nvar _STAR_implicit_source_STAR__orig_val__25434 = datascript.query._STAR_implicit_source_STAR_;\nvar _STAR_implicit_source_STAR__temp_val__25435 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"sources\",\"sources\",-321166424).cljs$core$IFn$_invoke$arity$1(context),cljs.core.first(clause));\n(datascript.query._STAR_implicit_source_STAR_ = _STAR_implicit_source_STAR__temp_val__25435);\n\ntry{var G__25436 = context;\nvar G__25437 = cljs.core.next(clause);\nreturn (datascript.query.resolve_clause.cljs$core$IFn$_invoke$arity$2 ? datascript.query.resolve_clause.cljs$core$IFn$_invoke$arity$2(G__25436,G__25437) : datascript.query.resolve_clause.call(null,G__25436,G__25437));\n}finally {(datascript.query._STAR_implicit_source_STAR_ = _STAR_implicit_source_STAR__orig_val__25434);\n}} else {\nreturn cljs.core.update.cljs$core$IFn$_invoke$arity$4(context,new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185),datascript.query.collapse_rels,datascript.query.solve_rule(context,clause));\n}\n} else {\nreturn datascript.query._resolve_clause.cljs$core$IFn$_invoke$arity$2(context,clause);\n}\n});\ndatascript.query._q = (function datascript$query$_q(context,clauses){\nvar _STAR_implicit_source_STAR__orig_val__25438 = datascript.query._STAR_implicit_source_STAR_;\nvar _STAR_implicit_source_STAR__temp_val__25439 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"sources\",\"sources\",-321166424).cljs$core$IFn$_invoke$arity$1(context),new cljs.core.Symbol(null,\"$\",\"$\",-1580747756,null));\n(datascript.query._STAR_implicit_source_STAR_ = _STAR_implicit_source_STAR__temp_val__25439);\n\ntry{return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(datascript.query.resolve_clause,context,clauses);\n}finally {(datascript.query._STAR_implicit_source_STAR_ = _STAR_implicit_source_STAR__orig_val__25438);\n}});\ndatascript.query._collect = (function datascript$query$_collect(var_args){\nvar G__25443 = arguments.length;\nswitch (G__25443) {\ncase 2:\nreturn datascript.query._collect.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));\n\nbreak;\ncase 3:\nreturn datascript.query._collect.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));\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(datascript.query._collect.cljs$core$IFn$_invoke$arity$2 = (function (context,symbols){\nvar rels = new cljs.core.Keyword(null,\"rels\",\"rels\",1770187185).cljs$core$IFn$_invoke$arity$1(context);\nreturn datascript.query._collect.cljs$core$IFn$_invoke$arity$3(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [me.tonsky.persistent_sorted_set.arrays.make_array(cljs.core.count(symbols))], null),rels,symbols);\n}));\n\n(datascript.query._collect.cljs$core$IFn$_invoke$arity$3 = (function (acc,rels,symbols){\nwhile(true){\nvar temp__5737__auto__ = cljs.core.first(rels);\nif((temp__5737__auto__ == null)){\nreturn acc;\n} else {\nvar rel = temp__5737__auto__;\nvar keep_attrs = cljs.core.select_keys(new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(rel),symbols);\nif(cljs.core.empty_QMARK_(keep_attrs)){\nvar G__25863 = acc;\nvar G__25864 = cljs.core.next(rels);\nvar G__25865 = symbols;\nacc = G__25863;\nrels = G__25864;\nsymbols = G__25865;\ncontinue;\n} else {\nvar copy_map = cljs.core.to_array(cljs.core.map.cljs$core$IFn$_invoke$arity$2(((function (acc,rels,symbols,keep_attrs,rel,temp__5737__auto__){\nreturn (function (p1__25441_SHARP_){\nreturn cljs.core.get.cljs$core$IFn$_invoke$arity$2(keep_attrs,p1__25441_SHARP_);\n});})(acc,rels,symbols,keep_attrs,rel,temp__5737__auto__))\n,symbols));\nvar len = cljs.core.count(symbols);\nvar G__25866 = (function (){var iter__4582__auto__ = ((function (acc,rels,symbols,copy_map,len,keep_attrs,rel,temp__5737__auto__){\nreturn (function datascript$query$iter__25444(s__25445){\nreturn (new cljs.core.LazySeq(null,((function (acc,rels,symbols,copy_map,len,keep_attrs,rel,temp__5737__auto__){\nreturn (function (){\nvar s__25445__$1 = s__25445;\nwhile(true){\nvar temp__5735__auto__ = cljs.core.seq(s__25445__$1);\nif(temp__5735__auto__){\nvar xs__6292__auto__ = temp__5735__auto__;\nvar t1 = cljs.core.first(xs__6292__auto__);\nvar iterys__4578__auto__ = ((function (s__25445__$1,acc,rels,symbols,t1,xs__6292__auto__,temp__5735__auto__,copy_map,len,keep_attrs,rel,temp__5737__auto__){\nreturn (function datascript$query$iter__25444_$_iter__25446(s__25447){\nreturn (new cljs.core.LazySeq(null,((function (s__25445__$1,acc,rels,symbols,t1,xs__6292__auto__,temp__5735__auto__,copy_map,len,keep_attrs,rel,temp__5737__auto__){\nreturn (function (){\nvar s__25447__$1 = s__25447;\nwhile(true){\nvar temp__5735__auto____$1 = cljs.core.seq(s__25447__$1);\nif(temp__5735__auto____$1){\nvar s__25447__$2 = temp__5735__auto____$1;\nif(cljs.core.chunked_seq_QMARK_(s__25447__$2)){\nvar c__4580__auto__ = cljs.core.chunk_first(s__25447__$2);\nvar size__4581__auto__ = cljs.core.count(c__4580__auto__);\nvar b__25449 = cljs.core.chunk_buffer(size__4581__auto__);\nif((function (){var i__25448 = (0);\nwhile(true){\nif((i__25448 < size__4581__auto__)){\nvar t2 = cljs.core._nth(c__4580__auto__,i__25448);\ncljs.core.chunk_append(b__25449,(function (){var res = cljs.core.aclone(t1);\nvar n__4666__auto___25869 = len;\nvar i_25870 = (0);\nwhile(true){\nif((i_25870 < n__4666__auto___25869)){\nvar temp__5739__auto___25871 = (copy_map[i_25870]);\nif((temp__5739__auto___25871 == null)){\n} else {\nvar idx_25872 = temp__5739__auto___25871;\n(res[i_25870] = (t2[idx_25872]));\n}\n\nvar G__25873 = (i_25870 + (1));\ni_25870 = G__25873;\ncontinue;\n} else {\n}\nbreak;\n}\n\nreturn res;\n})());\n\nvar G__25874 = (i__25448 + (1));\ni__25448 = G__25874;\ncontinue;\n} else {\nreturn true;\n}\nbreak;\n}\n})()){\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25449),datascript$query$iter__25444_$_iter__25446(cljs.core.chunk_rest(s__25447__$2)));\n} else {\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25449),null);\n}\n} else {\nvar t2 = cljs.core.first(s__25447__$2);\nreturn cljs.core.cons((function (){var res = cljs.core.aclone(t1);\nvar n__4666__auto___25875 = len;\nvar i_25876 = (0);\nwhile(true){\nif((i_25876 < n__4666__auto___25875)){\nvar temp__5739__auto___25877 = (copy_map[i_25876]);\nif((temp__5739__auto___25877 == null)){\n} else {\nvar idx_25878 = temp__5739__auto___25877;\n(res[i_25876] = (t2[idx_25878]));\n}\n\nvar G__25879 = (i_25876 + (1));\ni_25876 = G__25879;\ncontinue;\n} else {\n}\nbreak;\n}\n\nreturn res;\n})(),datascript$query$iter__25444_$_iter__25446(cljs.core.rest(s__25447__$2)));\n}\n} else {\nreturn null;\n}\nbreak;\n}\n});})(s__25445__$1,acc,rels,symbols,t1,xs__6292__auto__,temp__5735__auto__,copy_map,len,keep_attrs,rel,temp__5737__auto__))\n,null,null));\n});})(s__25445__$1,acc,rels,symbols,t1,xs__6292__auto__,temp__5735__auto__,copy_map,len,keep_attrs,rel,temp__5737__auto__))\n;\nvar fs__4579__auto__ = cljs.core.seq(iterys__4578__auto__(new cljs.core.Keyword(null,\"tuples\",\"tuples\",-676032639).cljs$core$IFn$_invoke$arity$1(rel)));\nif(fs__4579__auto__){\nreturn cljs.core.concat.cljs$core$IFn$_invoke$arity$2(fs__4579__auto__,datascript$query$iter__25444(cljs.core.rest(s__25445__$1)));\n} else {\nvar G__25880 = cljs.core.rest(s__25445__$1);\ns__25445__$1 = G__25880;\ncontinue;\n}\n} else {\nreturn null;\n}\nbreak;\n}\n});})(acc,rels,symbols,copy_map,len,keep_attrs,rel,temp__5737__auto__))\n,null,null));\n});})(acc,rels,symbols,copy_map,len,keep_attrs,rel,temp__5737__auto__))\n;\nreturn iter__4582__auto__(acc);\n})();\nvar G__25867 = cljs.core.next(rels);\nvar G__25868 = symbols;\nacc = G__25866;\nrels = G__25867;\nsymbols = G__25868;\ncontinue;\n}\n}\nbreak;\n}\n}));\n\n(datascript.query._collect.cljs$lang$maxFixedArity = 3);\n\ndatascript.query.collect = (function datascript$query$collect(context,symbols){\nreturn cljs.core.set(cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.vec,datascript.query._collect.cljs$core$IFn$_invoke$arity$2(context,symbols)));\n});\n\n/**\n * @interface\n */\ndatascript.query.IContextResolve = function(){};\n\ndatascript.query._context_resolve = (function datascript$query$_context_resolve(var$,context){\nif((((!((var$ == null)))) && ((!((var$.datascript$query$IContextResolve$_context_resolve$arity$2 == null)))))){\nreturn var$.datascript$query$IContextResolve$_context_resolve$arity$2(var$,context);\n} else {\nvar x__4487__auto__ = (((var$ == null))?null:var$);\nvar m__4488__auto__ = (datascript.query._context_resolve[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(var$,context) : m__4488__auto__.call(null,var$,context));\n} else {\nvar m__4485__auto__ = (datascript.query._context_resolve[\"_\"]);\nif((!((m__4485__auto__ == null)))){\nreturn (m__4485__auto__.cljs$core$IFn$_invoke$arity$2 ? m__4485__auto__.cljs$core$IFn$_invoke$arity$2(var$,context) : m__4485__auto__.call(null,var$,context));\n} else {\nthrow cljs.core.missing_protocol(\"IContextResolve.-context-resolve\",var$);\n}\n}\n}\n});\n\n(datascript.parser.Variable.prototype.datascript$query$IContextResolve$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.parser.Variable.prototype.datascript$query$IContextResolve$_context_resolve$arity$2 = (function (var$,context){\nvar var$__$1 = this;\nreturn datascript.query.context_resolve_val(context,var$__$1.symbol);\n}));\n\n(datascript.parser.SrcVar.prototype.datascript$query$IContextResolve$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.parser.SrcVar.prototype.datascript$query$IContextResolve$_context_resolve$arity$2 = (function (var$,context){\nvar var$__$1 = this;\nreturn cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(context,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"sources\",\"sources\",-321166424),var$__$1.symbol], null));\n}));\n\n(datascript.parser.PlainSymbol.prototype.datascript$query$IContextResolve$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.parser.PlainSymbol.prototype.datascript$query$IContextResolve$_context_resolve$arity$2 = (function (var$,_){\nvar var$__$1 = this;\nvar or__4185__auto__ = cljs.core.get.cljs$core$IFn$_invoke$arity$2(datascript.query.built_in_aggregates,var$__$1.symbol);\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nreturn datascript.query.resolve_sym(var$__$1.symbol);\n}\n}));\n\n(datascript.parser.Constant.prototype.datascript$query$IContextResolve$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.parser.Constant.prototype.datascript$query$IContextResolve$_context_resolve$arity$2 = (function (var$,_){\nvar var$__$1 = this;\nreturn var$__$1.value;\n}));\ndatascript.query._aggregate = (function datascript$query$_aggregate(find_elements,context,tuples){\nreturn cljs.core.mapv.cljs$core$IFn$_invoke$arity$4((function (element,fixed_value,i){\nif(datascript.parser.aggregate_QMARK_(element)){\nvar f = datascript.query._context_resolve(new cljs.core.Keyword(null,\"fn\",\"fn\",-1175266204).cljs$core$IFn$_invoke$arity$1(element),context);\nvar args = cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__25451_SHARP_){\nreturn datascript.query._context_resolve(p1__25451_SHARP_,context);\n}),cljs.core.butlast(new cljs.core.Keyword(null,\"args\",\"args\",1315556576).cljs$core$IFn$_invoke$arity$1(element)));\nvar vals = cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__25452_SHARP_){\nreturn cljs.core.nth.cljs$core$IFn$_invoke$arity$2(p1__25452_SHARP_,i);\n}),tuples);\nreturn cljs.core.apply.cljs$core$IFn$_invoke$arity$2(f,cljs.core.concat.cljs$core$IFn$_invoke$arity$2(args,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [vals], null)));\n} else {\nreturn fixed_value;\n}\n}),find_elements,cljs.core.first(tuples),cljs.core.range.cljs$core$IFn$_invoke$arity$0());\n});\ndatascript.query.idxs_of = (function datascript$query$idxs_of(pred,coll){\nreturn cljs.core.remove.cljs$core$IFn$_invoke$arity$2(cljs.core.nil_QMARK_,cljs.core.map.cljs$core$IFn$_invoke$arity$3((function (p1__25453_SHARP_,p2__25454_SHARP_){\nif(cljs.core.truth_((pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(p1__25453_SHARP_) : pred.call(null,p1__25453_SHARP_)))){\nreturn p2__25454_SHARP_;\n} else {\nreturn null;\n}\n}),coll,cljs.core.range.cljs$core$IFn$_invoke$arity$0()));\n});\ndatascript.query.aggregate = (function datascript$query$aggregate(find_elements,context,resultset){\nvar group_idxs = datascript.query.idxs_of(cljs.core.complement(datascript.parser.aggregate_QMARK_),find_elements);\nvar group_fn = (function (tuple){\nreturn cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__25455_SHARP_){\nreturn cljs.core.nth.cljs$core$IFn$_invoke$arity$2(tuple,p1__25455_SHARP_);\n}),group_idxs);\n});\nvar grouped = cljs.core.group_by(group_fn,resultset);\nvar iter__4582__auto__ = (function datascript$query$aggregate_$_iter__25456(s__25457){\nreturn (new cljs.core.LazySeq(null,(function (){\nvar s__25457__$1 = s__25457;\nwhile(true){\nvar temp__5735__auto__ = cljs.core.seq(s__25457__$1);\nif(temp__5735__auto__){\nvar s__25457__$2 = temp__5735__auto__;\nif(cljs.core.chunked_seq_QMARK_(s__25457__$2)){\nvar c__4580__auto__ = cljs.core.chunk_first(s__25457__$2);\nvar size__4581__auto__ = cljs.core.count(c__4580__auto__);\nvar b__25459 = cljs.core.chunk_buffer(size__4581__auto__);\nif((function (){var i__25458 = (0);\nwhile(true){\nif((i__25458 < size__4581__auto__)){\nvar vec__25460 = cljs.core._nth(c__4580__auto__,i__25458);\nvar _ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25460,(0),null);\nvar tuples = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25460,(1),null);\ncljs.core.chunk_append(b__25459,datascript.query._aggregate(find_elements,context,tuples));\n\nvar G__25889 = (i__25458 + (1));\ni__25458 = G__25889;\ncontinue;\n} else {\nreturn true;\n}\nbreak;\n}\n})()){\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25459),datascript$query$aggregate_$_iter__25456(cljs.core.chunk_rest(s__25457__$2)));\n} else {\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25459),null);\n}\n} else {\nvar vec__25464 = cljs.core.first(s__25457__$2);\nvar _ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25464,(0),null);\nvar tuples = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25464,(1),null);\nreturn cljs.core.cons(datascript.query._aggregate(find_elements,context,tuples),datascript$query$aggregate_$_iter__25456(cljs.core.rest(s__25457__$2)));\n}\n} else {\nreturn null;\n}\nbreak;\n}\n}),null,null));\n});\nreturn iter__4582__auto__(grouped);\n});\n\n/**\n * @interface\n */\ndatascript.query.IPostProcess = function(){};\n\ndatascript.query._post_process = (function datascript$query$_post_process(find,tuples){\nif((((!((find == null)))) && ((!((find.datascript$query$IPostProcess$_post_process$arity$2 == null)))))){\nreturn find.datascript$query$IPostProcess$_post_process$arity$2(find,tuples);\n} else {\nvar x__4487__auto__ = (((find == null))?null:find);\nvar m__4488__auto__ = (datascript.query._post_process[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(find,tuples) : m__4488__auto__.call(null,find,tuples));\n} else {\nvar m__4485__auto__ = (datascript.query._post_process[\"_\"]);\nif((!((m__4485__auto__ == null)))){\nreturn (m__4485__auto__.cljs$core$IFn$_invoke$arity$2 ? m__4485__auto__.cljs$core$IFn$_invoke$arity$2(find,tuples) : m__4485__auto__.call(null,find,tuples));\n} else {\nthrow cljs.core.missing_protocol(\"IPostProcess.-post-process\",find);\n}\n}\n}\n});\n\n(datascript.parser.FindRel.prototype.datascript$query$IPostProcess$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.parser.FindRel.prototype.datascript$query$IPostProcess$_post_process$arity$2 = (function (_,tuples){\nvar ___$1 = this;\nreturn tuples;\n}));\n\n(datascript.parser.FindColl.prototype.datascript$query$IPostProcess$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.parser.FindColl.prototype.datascript$query$IPostProcess$_post_process$arity$2 = (function (_,tuples){\nvar ___$1 = this;\nreturn cljs.core.into.cljs$core$IFn$_invoke$arity$3(cljs.core.PersistentVector.EMPTY,cljs.core.map.cljs$core$IFn$_invoke$arity$1(cljs.core.first),tuples);\n}));\n\n(datascript.parser.FindScalar.prototype.datascript$query$IPostProcess$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.parser.FindScalar.prototype.datascript$query$IPostProcess$_post_process$arity$2 = (function (_,tuples){\nvar ___$1 = this;\nreturn cljs.core.ffirst(tuples);\n}));\n\n(datascript.parser.FindTuple.prototype.datascript$query$IPostProcess$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.parser.FindTuple.prototype.datascript$query$IPostProcess$_post_process$arity$2 = (function (_,tuples){\nvar ___$1 = this;\nreturn cljs.core.first(tuples);\n}));\ndatascript.query.pull = (function datascript$query$pull(find_elements,context,resultset){\nvar resolved = (function (){var iter__4582__auto__ = (function datascript$query$pull_$_iter__25467(s__25468){\nreturn (new cljs.core.LazySeq(null,(function (){\nvar s__25468__$1 = s__25468;\nwhile(true){\nvar temp__5735__auto__ = cljs.core.seq(s__25468__$1);\nif(temp__5735__auto__){\nvar s__25468__$2 = temp__5735__auto__;\nif(cljs.core.chunked_seq_QMARK_(s__25468__$2)){\nvar c__4580__auto__ = cljs.core.chunk_first(s__25468__$2);\nvar size__4581__auto__ = cljs.core.count(c__4580__auto__);\nvar b__25470 = cljs.core.chunk_buffer(size__4581__auto__);\nif((function (){var i__25469 = (0);\nwhile(true){\nif((i__25469 < size__4581__auto__)){\nvar find = cljs.core._nth(c__4580__auto__,i__25469);\ncljs.core.chunk_append(b__25470,((datascript.parser.pull_QMARK_(find))?new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [datascript.query._context_resolve(new cljs.core.Keyword(null,\"source\",\"source\",-433931539).cljs$core$IFn$_invoke$arity$1(find),context),datascript.pull_parser.parse_pull(datascript.query._context_resolve(new cljs.core.Keyword(null,\"pattern\",\"pattern\",242135423).cljs$core$IFn$_invoke$arity$1(find),context))], null):null));\n\nvar G__25897 = (i__25469 + (1));\ni__25469 = G__25897;\ncontinue;\n} else {\nreturn true;\n}\nbreak;\n}\n})()){\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25470),datascript$query$pull_$_iter__25467(cljs.core.chunk_rest(s__25468__$2)));\n} else {\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25470),null);\n}\n} else {\nvar find = cljs.core.first(s__25468__$2);\nreturn cljs.core.cons(((datascript.parser.pull_QMARK_(find))?new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [datascript.query._context_resolve(new cljs.core.Keyword(null,\"source\",\"source\",-433931539).cljs$core$IFn$_invoke$arity$1(find),context),datascript.pull_parser.parse_pull(datascript.query._context_resolve(new cljs.core.Keyword(null,\"pattern\",\"pattern\",242135423).cljs$core$IFn$_invoke$arity$1(find),context))], null):null),datascript$query$pull_$_iter__25467(cljs.core.rest(s__25468__$2)));\n}\n} else {\nreturn null;\n}\nbreak;\n}\n}),null,null));\n});\nreturn iter__4582__auto__(find_elements);\n})();\nvar iter__4582__auto__ = (function datascript$query$pull_$_iter__25471(s__25472){\nreturn (new cljs.core.LazySeq(null,(function (){\nvar s__25472__$1 = s__25472;\nwhile(true){\nvar temp__5735__auto__ = cljs.core.seq(s__25472__$1);\nif(temp__5735__auto__){\nvar s__25472__$2 = temp__5735__auto__;\nif(cljs.core.chunked_seq_QMARK_(s__25472__$2)){\nvar c__4580__auto__ = cljs.core.chunk_first(s__25472__$2);\nvar size__4581__auto__ = cljs.core.count(c__4580__auto__);\nvar b__25474 = cljs.core.chunk_buffer(size__4581__auto__);\nif((function (){var i__25473 = (0);\nwhile(true){\nif((i__25473 < size__4581__auto__)){\nvar tuple = cljs.core._nth(c__4580__auto__,i__25473);\ncljs.core.chunk_append(b__25474,cljs.core.mapv.cljs$core$IFn$_invoke$arity$3(((function (i__25473,tuple,c__4580__auto__,size__4581__auto__,b__25474,s__25472__$2,temp__5735__auto__,resolved){\nreturn (function (env,el){\nif(cljs.core.truth_(env)){\nvar vec__25475 = env;\nvar src = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25475,(0),null);\nvar spec = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25475,(1),null);\nreturn datascript.pull_api.pull_spec(src,spec,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [el], null),false);\n} else {\nreturn el;\n}\n});})(i__25473,tuple,c__4580__auto__,size__4581__auto__,b__25474,s__25472__$2,temp__5735__auto__,resolved))\n,resolved,tuple));\n\nvar G__25898 = (i__25473 + (1));\ni__25473 = G__25898;\ncontinue;\n} else {\nreturn true;\n}\nbreak;\n}\n})()){\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25474),datascript$query$pull_$_iter__25471(cljs.core.chunk_rest(s__25472__$2)));\n} else {\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__25474),null);\n}\n} else {\nvar tuple = cljs.core.first(s__25472__$2);\nreturn cljs.core.cons(cljs.core.mapv.cljs$core$IFn$_invoke$arity$3(((function (tuple,s__25472__$2,temp__5735__auto__,resolved){\nreturn (function (env,el){\nif(cljs.core.truth_(env)){\nvar vec__25478 = env;\nvar src = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25478,(0),null);\nvar spec = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__25478,(1),null);\nreturn datascript.pull_api.pull_spec(src,spec,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [el], null),false);\n} else {\nreturn el;\n}\n});})(tuple,s__25472__$2,temp__5735__auto__,resolved))\n,resolved,tuple),datascript$query$pull_$_iter__25471(cljs.core.rest(s__25472__$2)));\n}\n} else {\nreturn null;\n}\nbreak;\n}\n}),null,null));\n});\nreturn iter__4582__auto__(resultset);\n});\ndatascript.query.query_cache = cljs.core.volatile_BANG_(datascript.lru.lru((100)));\ndatascript.query.memoized_parse_query = (function datascript$query$memoized_parse_query(q){\nvar temp__5737__auto__ = cljs.core.get.cljs$core$IFn$_invoke$arity$3(cljs.core.deref(datascript.query.query_cache),q,null);\nif((temp__5737__auto__ == null)){\nvar qp = datascript.parser.parse_query(q);\ndatascript.query.query_cache.cljs$core$IVolatile$_vreset_BANG_$arity$2(null,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(datascript.query.query_cache.cljs$core$IDeref$_deref$arity$1(null),q,qp));\n\nreturn qp;\n} else {\nvar cached = temp__5737__auto__;\nreturn cached;\n}\n});\ndatascript.query.q = (function datascript$query$q(var_args){\nvar args__4795__auto__ = [];\nvar len__4789__auto___25902 = arguments.length;\nvar i__4790__auto___25903 = (0);\nwhile(true){\nif((i__4790__auto___25903 < len__4789__auto___25902)){\nargs__4795__auto__.push((arguments[i__4790__auto___25903]));\n\nvar G__25907 = (i__4790__auto___25903 + (1));\ni__4790__auto___25903 = G__25907;\ncontinue;\n} else {\n}\nbreak;\n}\n\nvar argseq__4796__auto__ = ((((1) < args__4795__auto__.length))?(new cljs.core.IndexedSeq(args__4795__auto__.slice((1)),(0),null)):null);\nreturn datascript.query.q.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4796__auto__);\n});\n\n(datascript.query.q.cljs$core$IFn$_invoke$arity$variadic = (function (q,inputs){\nvar parsed_q = datascript.query.memoized_parse_query(q);\nvar find = new cljs.core.Keyword(null,\"qfind\",\"qfind\",1529332972).cljs$core$IFn$_invoke$arity$1(parsed_q);\nvar find_elements = datascript.parser.find_elements(find);\nvar find_vars = datascript.parser.find_vars(find);\nvar result_arity = cljs.core.count(find_elements);\nvar with$ = new cljs.core.Keyword(null,\"qwith\",\"qwith\",-45809392).cljs$core$IFn$_invoke$arity$1(parsed_q);\nvar all_vars = cljs.core.concat.cljs$core$IFn$_invoke$arity$2(find_vars,cljs.core.map.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"symbol\",\"symbol\",-1038572696),with$));\nvar q__$1 = (function (){var G__25484 = q;\nif(cljs.core.sequential_QMARK_(q)){\nreturn datascript.parser.query__GT_map(G__25484);\n} else {\nreturn G__25484;\n}\n})();\nvar wheres = new cljs.core.Keyword(null,\"where\",\"where\",-2044795965).cljs$core$IFn$_invoke$arity$1(q__$1);\nvar context = datascript.query.resolve_ins((new datascript.query.Context(cljs.core.PersistentVector.EMPTY,cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,null,null,null)),new cljs.core.Keyword(null,\"qin\",\"qin\",1372651151).cljs$core$IFn$_invoke$arity$1(parsed_q),inputs);\nvar resultset = datascript.query.collect(datascript.query._q(context,wheres),all_vars);\nvar G__25485 = resultset;\nvar G__25485__$1 = (cljs.core.truth_(new cljs.core.Keyword(null,\"with\",\"with\",-1536296876).cljs$core$IFn$_invoke$arity$1(q__$1))?cljs.core.mapv.cljs$core$IFn$_invoke$arity$2((function (p1__25481_SHARP_){\nreturn cljs.core.vec(cljs.core.subvec.cljs$core$IFn$_invoke$arity$3(p1__25481_SHARP_,(0),result_arity));\n}),G__25485):G__25485);\nvar G__25485__$2 = (cljs.core.truth_(cljs.core.some(datascript.parser.aggregate_QMARK_,find_elements))?datascript.query.aggregate(find_elements,context,G__25485__$1):G__25485__$1);\nvar G__25485__$3 = (cljs.core.truth_(cljs.core.some(datascript.parser.pull_QMARK_,find_elements))?datascript.query.pull(find_elements,context,G__25485__$2):G__25485__$2);\nreturn datascript.query._post_process(find,G__25485__$3);\n\n}));\n\n(datascript.query.q.cljs$lang$maxFixedArity = (1));\n\n/** @this {Function} */\n(datascript.query.q.cljs$lang$applyTo = (function (seq25482){\nvar G__25483 = cljs.core.first(seq25482);\nvar seq25482__$1 = cljs.core.next(seq25482);\nvar self__4776__auto__ = this;\nreturn self__4776__auto__.cljs$core$IFn$_invoke$arity$variadic(G__25483,seq25482__$1);\n}));\n\n","~:ns-info",["^ ","~:rename-macros",null,"~:renames",["^ "],"~:meta",["^ ","~:file","datascript/query.cljc","~:line",1,"~:column",14,"~:end-line",1,"~:end-column",30,"~:no-doc",true],"~:ns-aliases",["^ ","~$cljs.loader","~$shadow.loader"],"~:use-macros",["^ ","~$raise","~$datascript.db"],"~:excludes",["~#set",[]],"~:name","~$datascript.query","~:op","~:ns","~:imports",null,"~:requires",["^ ","~$da","~$me.tonsky.persistent-sorted-set.arrays","~$set","~$clojure.set","~$dpp","~$datascript.pull-parser","~$dpa","~$datascript.pull-api","~$cljs.core","^R","~$goog","^S","~$walk","~$clojure.walk","~$datascript.parser","^V","~$db","^A","^M","^M","~$datascript.lru","^X","^A","^A","^K","^K","^O","^O","^Q","^Q","~$str","~$clojure.string","^Z","^Z","~$de","~$datascript.impl.entity","~$dp","^V","~$cljs.reader","^12","^U","^U","~$edn","^12","^10","^10"],"~:seen",["^C",["~:require"]],"~:uses",["^ ","~$Constant","^V","~$BindIgnore","^V","~$FindTuple","^V","~$SrcVar","^V","~$FindColl","^V","~$BindTuple","^V","~$BindColl","^V","~$BindScalar","^V","~$PlainSymbol","^V","~$FindRel","^V","~$FindScalar","^V","~$RulesVar","^V","~$Variable","^V"],"~:require-macros",["^ ","^J","^K","^R","^R","^V","^V","^W","^A","^A","^A","^K","^K","^11","^V","^12","^12","^13","^12"],"~:form",["~#list",["~$ns","^E",["^1F",["^15",["^12","~:as","^13"],["^M","^1H","^L"],["^Z","^1H","^Y"],["^U","^1H","^T"],["^A","^1H","^W","~:refer-macros",["^@"]],["^K","^1H","^J"],["^X"],["^10","^1H","^["],["^V","^1H","^11","~:refer",["^1=","^18","^1>","^1<","^17","^1;","^1@","^1A","^19","^1?","^1B","^1:","^1C"]],["^Q","^1H","^P"],["^O","^1H","^N"]]]]],"~:flags",["^ ","^15",["^C",[]]],"~:js-deps",["^ "],"~:deps",["^S","^R","^12","^M","^Z","^U","^A","^K","^X","^10","^V","^Q","^O"]],"^G","^E","~:resource-id",["~:shadow.build.classpath/resource","datascript/query.cljc"],"~:compiled-at",1590237781860,"~:resource-name","datascript/query.cljc","~:warnings",[],"~:source","(ns ^:no-doc datascript.query\n  (:require\n   [#?(:cljs cljs.reader :clj clojure.edn) :as edn]\n   [clojure.set :as set]\n   [clojure.string :as str]\n   [clojure.walk :as walk]\n   [datascript.db :as db #?(:cljs :refer-macros :clj :refer) [raise]]\n   [me.tonsky.persistent-sorted-set.arrays :as da]\n   [datascript.lru]\n   [datascript.impl.entity :as de]\n   [datascript.parser :as dp #?@(:cljs [:refer [BindColl BindIgnore BindScalar BindTuple Constant\n                                                FindColl FindRel FindScalar FindTuple PlainSymbol\n                                                RulesVar SrcVar Variable]])]\n   [datascript.pull-api :as dpa]\n   [datascript.pull-parser :as dpp])\n  #?(:clj (:import [datascript.parser BindColl BindIgnore BindScalar BindTuple\n                    Constant FindColl FindRel FindScalar FindTuple PlainSymbol\n                    RulesVar SrcVar Variable])))\n\n;; ----------------------------------------------------------------------------\n\n(def ^:const lru-cache-size 100)\n\n(declare -collect -resolve-clause resolve-clause)\n\n;; Records\n\n(defrecord Context [rels sources rules])\n\n;; attrs:\n;;    {?e 0, ?v 1} or {?e2 \"a\", ?age \"v\"}\n;; tuples:\n;;    [ #js [1 \"Ivan\" 5 14] ... ]\n;; or [ (Datom. 2 \"Oleg\" 1 55) ... ]\n(defrecord Relation [attrs tuples])\n\n\n;; Utilities\n\n(defn single [coll]\n  (assert (nil? (next coll)) \"Expected single element\")\n  (first coll))\n\n(defn intersect-keys [attrs1 attrs2]\n  (set/intersection (set (keys attrs1))\n                    (set (keys attrs2))))\n\n(defn concatv [& xs]\n  (into [] cat xs))\n\n(defn zip\n  ([a b] (mapv vector a b))\n  ([a b & rest] (apply mapv vector a b rest)))\n\n(defn same-keys? [a b]\n  (and (= (count a) (count b))\n       (every? #(contains? b %) (keys a))\n       (every? #(contains? b %) (keys a))))\n\n(defn- looks-like? [pattern form]\n  (cond\n    (= '_ pattern)\n      true\n    (= '[*] pattern)\n      (sequential? form)\n    (symbol? pattern)\n      (= form pattern)\n    (sequential? pattern)\n      (if (= (last pattern) '*)\n        (and (sequential? form)\n             (every? (fn [[pattern-el form-el]] (looks-like? pattern-el form-el))\n                     (map vector (butlast pattern) form)))\n        (and (sequential? form)\n             (= (count form) (count pattern))\n             (every? (fn [[pattern-el form-el]] (looks-like? pattern-el form-el))\n                     (map vector pattern form))))\n    :else ;; (predicate? pattern)\n      (pattern form)))\n\n(defn source? [sym]\n  (and (symbol? sym)\n       (= \\$ (first (name sym)))))\n\n(defn free-var? [sym]\n  (and (symbol? sym)\n       (= \\? (first (name sym)))))\n\n(defn attr? [form]\n  (or (keyword? form) (string? form)))\n\n(defn lookup-ref? [form]\n  (looks-like? [attr? '_] form))\n\n;; Relation algebra\n\n(defn join-tuples [t1 #?(:cljs idxs1\n                         :clj  ^{:tag \"[[Ljava.lang.Object;\"} idxs1)\n                   t2 #?(:cljs idxs2\n                         :clj  ^{:tag \"[[Ljava.lang.Object;\"} idxs2)]\n  (let [l1  (alength idxs1)\n        l2  (alength idxs2)\n        res (da/make-array (+ l1 l2))]\n    (dotimes [i l1]\n      (aset res i (#?(:cljs da/aget :clj get) t1 (aget idxs1 i)))) ;; FIXME aget\n    (dotimes [i l2]\n      (aset res (+ l1 i) (#?(:cljs da/aget :clj get) t2 (aget idxs2 i)))) ;; FIXME aget\n    res))\n\n(defn sum-rel [a b]\n  (let [{attrs-a :attrs, tuples-a :tuples} a\n        {attrs-b :attrs, tuples-b :tuples} b]\n    (cond\n      (= attrs-a attrs-b)\n      (Relation. attrs-a (into (vec tuples-a) tuples-b))\n\n      (not (same-keys? attrs-a attrs-b))\n      (raise \"Can’t sum relations with different attrs: \" attrs-a \" and \" attrs-b\n             {:error :query/where})\n\n      (every? number? (vals attrs-a)) ;; can’t conj into BTSetIter\n      (let [idxb->idxa (vec (for [[sym idx-b] attrs-b]\n                              [idx-b (attrs-a sym)]))\n            tlen    (->> (vals attrs-a) (reduce max) (inc)) \n            tuples' (persistent!\n                      (reduce\n                        (fn [acc tuple-b]\n                          (let [tuple' (da/make-array tlen)]\n                            (doseq [[idx-b idx-a] idxb->idxa]\n                              (aset tuple' idx-a (#?(:cljs da/aget :clj get) tuple-b idx-b)))\n                            (conj! acc tuple')))\n                        (transient (vec tuples-a))\n                        tuples-b))]\n        (Relation. attrs-a tuples'))\n\n      :else\n      (let [all-attrs (zipmap (keys (merge attrs-a attrs-b)) (range))]\n        (-> (Relation. all-attrs [])\n            (sum-rel a)\n            (sum-rel b))))))\n\n(defn prod-rel\n  ([] (Relation. {} [(da/make-array 0)]))\n  ([rel1 rel2]\n    (let [attrs1 (keys (:attrs rel1))\n          attrs2 (keys (:attrs rel2))\n          idxs1  (to-array (map (:attrs rel1) attrs1))\n          idxs2  (to-array (map (:attrs rel2) attrs2))]\n      (Relation.\n        (zipmap (concat attrs1 attrs2) (range))\n        (persistent!\n          (reduce\n            (fn [acc t1]\n              (reduce (fn [acc t2]\n                        (conj! acc (join-tuples t1 idxs1 t2 idxs2)))\n                      acc (:tuples rel2)))\n            (transient []) (:tuples rel1)))\n        ))))\n\n;; built-ins\n\n(defn- -differ? [& xs]\n  (let [l (count xs)]\n    (not= (take (/ l 2) xs) (drop (/ l 2) xs))))\n\n(defn- -get-else\n  [db e a else-val]\n  (when (nil? else-val)\n    (raise \"get-else: nil default value is not supported\" {:error :query/where}))\n  (if-some [datom (first (db/-search db [e a]))]\n    (:v datom)\n    else-val))\n\n(defn- -get-some\n  [db e & as]\n  (reduce\n   (fn [_ a]\n     (when-some [datom (first (db/-search db [e a]))]\n       (reduced [(:a datom) (:v datom)])))\n   nil\n   as))\n\n(defn- -missing?\n  [db e a]\n  (nil? (get (de/entity db e) a)))\n\n(defn- and-fn [& args]\n  (reduce (fn [a b]\n            (if b b (reduced b))) true args))\n            \n(defn- or-fn [& args]\n  (reduce (fn [a b]\n            (if b (reduced b) b)) nil args))\n\n(def built-ins {\n  '= =, '== ==, 'not= not=, '!= not=, '< <, '> >, '<= <=, '>= >=, '+ +, '- -,\n  '* *, '/ /, 'quot quot, 'rem rem, 'mod mod, 'inc inc, 'dec dec, 'max max, 'min min,\n  'zero? zero?, 'pos? pos?, 'neg? neg?, 'even? even?, 'odd? odd?, 'compare compare,\n  'rand rand, 'rand-int rand-int,\n  'true? true?, 'false? false?, 'nil? nil?, 'some? some?, 'not not, 'and and-fn, 'or or-fn,\n  'complement complement, 'identical? identical?,\n  'identity identity, 'meta meta, 'name name, 'namespace namespace, 'type type,\n  'vector vector, 'list list, 'set set, 'hash-map hash-map, 'array-map array-map,\n  'count count, 'range range, 'not-empty not-empty, 'empty? empty?, 'contains? contains?,\n  'str str, 'pr-str pr-str, 'print-str print-str, 'println-str println-str, 'prn-str prn-str, 'subs subs,\n  're-find re-find, 're-matches re-matches, 're-seq re-seq, 're-pattern re-pattern,\n  '-differ? -differ?, 'get-else -get-else, 'get-some -get-some, 'missing? -missing?, 'ground identity,\n  'clojure.string/blank? str/blank?, 'clojure.string/includes? str/includes?,\n  'clojure.string/starts-with? str/starts-with?, 'clojure.string/ends-with? str/ends-with?\n})\n\n(def built-in-aggregates\n (letfn [(sum [coll] (reduce + 0 coll))\n         (avg [coll] (/ (sum coll) (count coll)))\n         (median\n           [coll]\n           (let [terms (sort coll)\n                 size (count coll)\n                 med (bit-shift-right size 1)]\n             (cond-> (nth terms med)\n               (even? size)\n               (-> (+ (nth terms (dec med)))\n                   (/ 2)))))\n         (variance\n           [coll]\n           (let [mean (avg coll)\n                 sum  (sum (for [x coll\n                                 :let [delta (- x mean)]]\n                             (* delta delta)))]\n             (/ sum (count coll))))\n         (stddev \n           [coll] \n           (#?(:cljs js/Math.sqrt :clj Math/sqrt) (variance coll)))]\n   {'avg      avg\n    'median   median\n    'variance variance\n    'stddev   stddev\n    'distinct set\n    'min      (fn\n                ([coll] (reduce (fn [acc x]\n                                  (if (neg? (compare x acc))\n                                    x acc))\n                                (first coll) (next coll)))\n                ([n coll]\n                  (vec\n                    (reduce (fn [acc x]\n                              (cond\n                                (< (count acc) n)\n                                  (sort compare (conj acc x))\n                                (neg? (compare x (last acc)))\n                                  (sort compare (conj (butlast acc) x))\n                                :else acc))\n                            [] coll))))\n    'max      (fn\n                ([coll] (reduce (fn [acc x]\n                                  (if (pos? (compare x acc))\n                                    x acc))\n                                (first coll) (next coll)))\n                ([n coll]\n                  (vec\n                    (reduce (fn [acc x]\n                              (cond\n                                (< (count acc) n)\n                                  (sort compare (conj acc x))\n                                (pos? (compare x (first acc)))\n                                  (sort compare (conj (next acc) x))\n                                :else acc))\n                            [] coll))))\n    'sum      sum\n    'rand     (fn\n                ([coll] (rand-nth coll))\n                ([n coll] (vec (repeatedly n #(rand-nth coll)))))\n    'sample   (fn [n coll]\n                (vec (take n (shuffle coll))))\n    'count    count\n    'count-distinct (fn [coll] (count (distinct coll)))}))\n\n\n;;\n\n(defn parse-rules [rules]\n  (let [rules (if (string? rules) (edn/read-string rules) rules)] ;; for datascript.js interop\n    (group-by ffirst rules)))\n\n(defn empty-rel [binding]\n  (let [vars (->> (dp/collect-vars-distinct binding)\n               (map :symbol))]\n    (Relation. (zipmap vars (range)) [])))\n\n(defprotocol IBinding\n  (in->rel [binding value]))\n\n(extend-protocol IBinding\n  BindIgnore\n  (in->rel [_ _]\n    (prod-rel))\n  \n  BindScalar\n  (in->rel [binding value]\n    (Relation. {(get-in binding [:variable :symbol]) 0} [(into-array [value])]))\n  \n  BindColl\n  (in->rel [binding coll]\n    (cond\n      (not (db/seqable? coll))\n        (raise \"Cannot bind value \" coll \" to collection \" (dp/source binding)\n               {:error :query/binding, :value coll, :binding (dp/source binding)})\n      (empty? coll)\n        (empty-rel binding)\n      :else\n        (->> coll\n          (map #(in->rel (:binding binding) %))\n          (reduce sum-rel))))\n  \n  BindTuple\n  (in->rel [binding coll]\n    (cond\n      (not (db/seqable? coll))\n        (raise \"Cannot bind value \" coll \" to tuple \" (dp/source binding)\n               {:error :query/binding, :value coll, :binding (dp/source binding)})\n      (< (count coll) (count (:bindings binding)))\n        (raise \"Not enough elements in a collection \" coll \" to bind tuple \" (dp/source binding)\n               {:error :query/binding, :value coll, :binding (dp/source binding)})\n      :else\n        (reduce prod-rel\n          (map #(in->rel %1 %2) (:bindings binding) coll)))))\n\n(defn resolve-in [context [binding value]]\n  (cond\n    (and (instance? BindScalar binding)\n         (instance? SrcVar (:variable binding)))\n      (update context :sources assoc (get-in binding [:variable :symbol]) value)\n    (and (instance? BindScalar binding)\n         (instance? RulesVar (:variable binding)))\n      (assoc context :rules (parse-rules value))\n    :else\n      (update context :rels conj (in->rel binding value))))\n\n(defn resolve-ins [context bindings values]\n  (reduce resolve-in context (zipmap bindings values)))\n\n;;\n\n(def ^{:dynamic true\n       :doc \"List of symbols in current pattern that might potentiall be resolved to refs\"}\n  *lookup-attrs* nil)\n\n(def ^{:dynamic true\n       :doc \"Default pattern source. Lookup refs, patterns, rules will be resolved with it\"}\n  *implicit-source* nil)\n\n(defn getter-fn [attrs attr]\n  (let [idx (attrs attr)]\n    (if (contains? *lookup-attrs* attr)\n      (fn [tuple]\n        (let [eid (#?(:cljs da/aget :clj get) tuple idx)]\n          (cond\n            (number? eid)     eid ;; quick path to avoid fn call\n            (sequential? eid) (db/entid *implicit-source* eid)\n            (da/array? eid)   (db/entid *implicit-source* eid)\n            :else             eid)))\n      (fn [tuple]\n        (#?(:cljs da/aget :clj get) tuple idx)))))\n\n(defn tuple-key-fn [getters]\n  (if (== (count getters) 1)\n    (first getters)\n    (let [getters (to-array getters)]\n      (fn [tuple]\n        (list* #?(:cljs (.map getters #(% tuple))\n                  :clj  (to-array (map #(% tuple) getters))))))))\n\n(defn hash-attrs [key-fn tuples]\n  (loop [tuples     tuples\n         hash-table (transient {})]\n    (if-some [tuple (first tuples)]\n      (let [key (key-fn tuple)]\n        (recur (next tuples)\n               (assoc! hash-table key (conj (get hash-table key '()) tuple))))\n      (persistent! hash-table))))\n\n(defn hash-join [rel1 rel2]\n  (let [tuples1       (:tuples rel1)\n        tuples2       (:tuples rel2)\n        attrs1        (:attrs rel1)\n        attrs2        (:attrs rel2)\n        common-attrs  (vec (intersect-keys (:attrs rel1) (:attrs rel2)))\n        common-gtrs1  (map #(getter-fn attrs1 %) common-attrs)\n        common-gtrs2  (map #(getter-fn attrs2 %) common-attrs)\n        keep-attrs1   (keys attrs1)\n        keep-attrs2   (vec (set/difference (set (keys attrs2)) (set (keys attrs1))))\n        keep-idxs1    (to-array (map attrs1 keep-attrs1))\n        keep-idxs2    (to-array (map attrs2 keep-attrs2))\n        key-fn1       (tuple-key-fn common-gtrs1)\n        hash          (hash-attrs key-fn1 tuples1)\n        key-fn2       (tuple-key-fn common-gtrs2)\n        new-tuples    (->>\n                        (reduce (fn [acc tuple2]\n                                  (let [key (key-fn2 tuple2)]\n                                    (if-some [tuples1 (get hash key)]\n                                      (reduce (fn [acc tuple1]\n                                                (conj! acc (join-tuples tuple1 keep-idxs1 tuple2 keep-idxs2)))\n                                              acc tuples1)\n                                      acc)))\n                          (transient []) tuples2)\n                        (persistent!))]\n    (Relation. (zipmap (concat keep-attrs1 keep-attrs2) (range))\n               new-tuples)))\n\n(defn subtract-rel [a b]\n  (let [{attrs-a :attrs, tuples-a :tuples} a\n        {attrs-b :attrs, tuples-b :tuples} b\n        attrs     (intersect-keys attrs-a attrs-b)\n        getters-b (map #(getter-fn attrs-b %) attrs)\n        key-fn-b  (tuple-key-fn getters-b)\n        hash      (hash-attrs key-fn-b tuples-b)\n        getters-a (map #(getter-fn attrs-a %) attrs)\n        key-fn-a  (tuple-key-fn getters-a)]\n    (assoc a\n      :tuples (filterv #(nil? (hash (key-fn-a %))) tuples-a))))\n\n(defn lookup-pattern-db [db pattern]\n  ;; TODO optimize with bound attrs min/max values here\n  (let [search-pattern (mapv #(if (symbol? %) nil %) pattern)\n        datoms         (db/-search db search-pattern)\n        attr->prop     (->> (map vector pattern [\"e\" \"a\" \"v\" \"tx\"])\n                            (filter (fn [[s _]] (free-var? s)))\n                            (into {}))]\n    (Relation. attr->prop datoms)))\n\n(defn matches-pattern? [pattern tuple]\n  (loop [tuple   tuple\n         pattern pattern]\n    (if (and tuple pattern)\n      (let [t (first tuple)\n            p (first pattern)]\n        (if (or (symbol? p) (= t p))\n          (recur (next tuple) (next pattern))\n          false))\n      true)))\n\n(defn lookup-pattern-coll [coll pattern]\n  (let [data       (filter #(matches-pattern? pattern %) coll)\n        attr->idx  (->> (map vector pattern (range))\n                        (filter (fn [[s _]] (free-var? s)))\n                        (into {}))]\n    (Relation. attr->idx (mapv to-array data)))) ;; FIXME to-array\n\n(defn normalize-pattern-clause [clause]\n  (if (source? (first clause))\n    clause\n    (concat ['$] clause)))\n\n(defn lookup-pattern [source pattern]\n  (cond\n    (satisfies? db/ISearch source)\n      (lookup-pattern-db source pattern)\n    :else\n      (lookup-pattern-coll source pattern)))\n\n(defn collapse-rels [rels new-rel]\n  (loop [rels    rels\n         new-rel new-rel\n         acc     []]\n    (if-some [rel (first rels)]\n      (if (not-empty (intersect-keys (:attrs new-rel) (:attrs rel)))\n        (recur (next rels) (hash-join rel new-rel) acc)\n        (recur (next rels) new-rel (conj acc rel)))\n      (conj acc new-rel))))\n\n(defn- rel-with-attr [context sym]\n  (some #(when (contains? (:attrs %) sym) %) (:rels context)))\n\n(defn- context-resolve-val [context sym]\n  (when-some [rel (rel-with-attr context sym)]\n    (when-some [tuple (first (:tuples rel))]\n      (#?(:cljs da/aget :clj get) tuple ((:attrs rel) sym)))))\n\n(defn- rel-contains-attrs? [rel attrs]\n  (some #(contains? (:attrs rel) %) attrs))\n\n(defn- rel-prod-by-attrs [context attrs]\n  (let [rels       (filter #(rel-contains-attrs? % attrs) (:rels context))\n        production (reduce prod-rel rels)]\n    [(update context :rels #(remove (set rels) %)) production]))\n\n(defn -call-fn [context rel f args]\n  (let [sources     (:sources context)\n        attrs       (:attrs rel)\n        len         (count args)\n        static-args (da/make-array len)\n        tuples-args (da/make-array len)]\n    (dotimes [i len]\n      (let [arg (nth args i)]\n        (if (symbol? arg) \n          (if-some [source (get sources arg)]\n            (da/aset static-args i source)\n            (da/aset tuples-args i (get attrs arg)))\n          (da/aset static-args i arg))))\n    ;; CLJS `apply` + `vector` will hold onto mutable array of arguments directly\n    ;; https://github.com/tonsky/datascript/issues/262\n    (if #?(:clj  false\n           :cljs (identical? f vector))\n      (fn [tuple]\n        ;; TODO raise if not all args are bound\n        (let [args (da/aclone static-args)]\n          (dotimes [i len]\n            (when-some [tuple-idx (aget tuples-args i)]\n              (let [v (#?(:cljs da/aget :clj get) tuple tuple-idx)]\n                (da/aset args i v))))\n          (apply f args)))\n      (fn [tuple]\n        ;; TODO raise if not all args are bound\n        (dotimes [i len]\n          (when-some [tuple-idx (aget tuples-args i)]\n            (let [v (#?(:cljs da/aget :clj get) tuple tuple-idx)]\n              (da/aset static-args i v))))\n        (apply f static-args)))))\n\n(defn- resolve-sym [sym]\n  #?(:cljs nil\n     :clj (when (namespace sym)\n            (when-some [v (resolve sym)] @v))))\n\n(defn filter-by-pred [context clause]\n  (let [[[f & args]] clause\n        pred         (or (get built-ins f)\n                         (context-resolve-val context f)\n                         (resolve-sym f)\n                         (when (nil? (rel-with-attr context f))\n                           (raise \"Unknown predicate '\" f \" in \" clause\n                                  {:error :query/where, :form clause, :var f})))\n        [context production] (rel-prod-by-attrs context (filter symbol? args))\n        new-rel      (if pred\n                       (let [tuple-pred (-call-fn context production pred args)]\n                         (update production :tuples #(filter tuple-pred %)))\n                       (assoc production :tuples []))]\n    (update context :rels conj new-rel)))\n\n(defn bind-by-fn [context clause]\n  (let [[[f & args] out] clause\n        binding  (dp/parse-binding out)\n        fun      (or (get built-ins f)\n                     (context-resolve-val context f)\n                     (resolve-sym f)\n                     (when (nil? (rel-with-attr context f))\n                       (raise \"Unknown function '\" f \" in \" clause\n                              {:error :query/where, :form clause, :var f})))\n        [context production] (rel-prod-by-attrs context (filter symbol? args))\n        new-rel  (if fun\n                   (let [tuple-fn (-call-fn context production fun args)\n                        rels     (for [tuple (:tuples production)\n                                       :let  [val (tuple-fn tuple)]\n                                       :when (not (nil? val))]\n                                   (prod-rel (Relation. (:attrs production) [tuple])\n                                             (in->rel binding val)))]\n                     (if (empty? rels)\n                       (prod-rel production (empty-rel binding))\n                       (reduce sum-rel rels)))\n                   (prod-rel (assoc production :tuples []) (empty-rel binding)))]\n    (update context :rels collapse-rels new-rel)))\n\n;;; RULES\n\n(defn rule? [context clause]\n  (and (sequential? clause)\n       (contains? (:rules context)\n                  (if (source? (first clause))\n                    (second clause)\n                    (first clause)))))\n\n(def rule-seqid (atom 0))\n\n(defn expand-rule [clause context used-args]\n  (let [[rule & call-args] clause\n        seqid              (swap! rule-seqid inc)\n        branches           (get (:rules context) rule)]\n    (for [branch branches\n          :let [[[_ & rule-args] & clauses] branch\n                replacements (zipmap rule-args call-args)]]\n      (walk/postwalk\n       #(if (free-var? %)\n          (db/some-of\n            (replacements %)\n            (symbol (str (name %) \"__auto__\" seqid)))\n          %)\n        clauses))))\n\n(defn remove-pairs [xs ys]\n  (let [pairs (->> (map vector xs ys)\n                   (remove (fn [[x y]] (= x y))))]\n    [(map first pairs)\n     (map second pairs)]))\n\n(defn rule-gen-guards [rule-clause used-args]\n  (let [[rule & call-args] rule-clause\n        prev-call-args     (get used-args rule)]\n    (for [prev-args prev-call-args\n          :let [[call-args prev-args] (remove-pairs call-args prev-args)]]\n      [(concat ['-differ?] call-args prev-args)])))\n\n(defn walk-collect [form pred]\n  (let [res (atom [])]\n    (walk/postwalk #(do (when (pred %) (swap! res conj %)) %) form)\n    @res))\n\n(defn collect-vars [clause]\n  (set (walk-collect clause free-var?)))\n\n(defn split-guards [clauses guards]\n  (let [bound-vars (collect-vars clauses)\n        pred       (fn [[[_ & vars]]] (every? bound-vars vars))]\n    [(filter pred guards)\n     (remove pred guards)]))\n\n(defn solve-rule [context clause]\n  (let [final-attrs     (filter free-var? clause)\n        final-attrs-map (zipmap final-attrs (range))\n;;         clause-cache    (atom {}) ;; TODO\n        solve           (fn [prefix-context clauses]\n                          (reduce -resolve-clause prefix-context clauses))\n        empty-rels?     (fn [context]\n                          (some #(empty? (:tuples %)) (:rels context)))]\n    (loop [stack (list {:prefix-clauses []\n                        :prefix-context context\n                        :clauses        [clause]\n                        :used-args      {}\n                        :pending-guards {}})\n           rel   (Relation. final-attrs-map [])]\n      (if-some [frame (first stack)]\n        (let [[clauses [rule-clause & next-clauses]] (split-with #(not (rule? context %)) (:clauses frame))]\n          (if (nil? rule-clause)\n\n            ;; no rules -> expand, collect, sum\n            (let [context (solve (:prefix-context frame) clauses)\n                  tuples  (-collect context final-attrs)\n                  new-rel (Relation. final-attrs-map tuples)]\n              (recur (next stack) (sum-rel rel new-rel)))\n\n            ;; has rule -> add guards -> check if dead -> expand rule -> push to stack, recur\n            (let [[rule & call-args]     rule-clause\n                  guards                 (rule-gen-guards rule-clause (:used-args frame))\n                  [active-gs pending-gs] (split-guards (concat (:prefix-clauses frame) clauses)\n                                                       (concat guards (:pending-guards frame)))]\n              (if (some #(= % '[(-differ?)]) active-gs) ;; trivial always false case like [(not= [?a ?b] [?a ?b])]\n\n                ;; this branch has no data, just drop it from stack\n                (recur (next stack) rel)\n\n                (let [prefix-clauses (concat clauses active-gs)\n                      prefix-context (solve (:prefix-context frame) prefix-clauses)]\n                  (if (empty-rels? prefix-context)\n\n                    ;; this branch has no data, just drop it from stack\n                    (recur (next stack) rel)\n\n                    ;; need to expand rule to branches\n                    (let [used-args  (assoc (:used-args frame) rule\n                                       (conj (get (:used-args frame) rule []) call-args))\n                          branches   (expand-rule rule-clause context used-args)]\n                      (recur (concat\n                               (for [branch branches]\n                                 {:prefix-clauses prefix-clauses\n                                  :prefix-context prefix-context\n                                  :clauses        (concatv branch next-clauses)\n                                  :used-args      used-args\n                                  :pending-guards pending-gs})\n                               (next stack))\n                             rel))))))))\n        rel))))\n\n(defn resolve-pattern-lookup-refs [source pattern]\n  (if (satisfies? db/IDB source)\n    (let [[e a v tx] pattern]\n      (->\n        [(if (or (lookup-ref? e) (attr? e)) (db/entid-strict source e) e)\n         a\n         (if (and v (attr? a) (db/ref? source a) (or (lookup-ref? v) (attr? v))) (db/entid-strict source v) v)\n         (if (lookup-ref? tx) (db/entid-strict source tx) tx)]\n        (subvec 0 (count pattern))))\n    pattern))\n\n(defn dynamic-lookup-attrs [source pattern]\n  (let [[e a v tx] pattern]\n    (cond-> #{}\n      (free-var? e) (conj e)\n      (free-var? tx) (conj tx)\n      (and\n        (free-var? v)\n        (not (free-var? a))\n        (db/ref? source a)) (conj v))))\n\n(defn limit-rel [rel vars]\n  (when-some [attrs' (not-empty (select-keys (:attrs rel) vars))]\n    (assoc rel :attrs attrs')))\n\n(defn limit-context [context vars]\n  (assoc context\n    :rels (->> (:rels context)\n               (keep #(limit-rel % vars)))))\n\n(defn bound-vars [context]\n  (into #{} (mapcat #(keys (:attrs %)) (:rels context))))\n\n(defn check-bound [bound vars form]\n  (when-not (set/subset? vars bound)\n    (let [missing (set/difference (set vars) bound)]\n      (raise \"Insufficient bindings: \" missing \" not bound in \" form\n             {:error :query/where\n              :form  form\n              :vars  missing}))))\n\n(defn check-free-same [bound branches form]\n  (let [free (mapv #(set/difference (collect-vars %) bound) branches)]\n    (when-not (apply = free)\n      (raise \"All clauses in 'or' must use same set of free vars, had \" free \" in \" form\n             {:error :query/where\n              :form  form\n              :vars  free}))))\n\n(defn check-free-subset [bound vars branches]\n  (let [free (set (remove bound vars))]\n    (doseq [branch branches]\n      (when-some [missing (not-empty (set/difference free (collect-vars branch)))]\n        (prn branch bound vars free)\n        (raise \"All clauses in 'or' must use same set of free vars, had \" missing \" not bound in \" branch\n          {:error :query/where\n           :form  branch\n           :vars  missing})))))\n\n(defn -resolve-clause\n  ([context clause]\n    (-resolve-clause context clause clause))\n  ([context clause orig-clause]\n   (condp looks-like? clause\n     [[symbol? '*]] ;; predicate [(pred ?a ?b ?c)]\n     (filter-by-pred context clause)\n     \n     [[symbol? '*] '_] ;; function [(fn ?a ?b) ?res]\n     (bind-by-fn context clause)\n     \n     [source? '*] ;; source + anything\n     (let [[source-sym & rest] clause]\n       (binding [*implicit-source* (get (:sources context) source-sym)]\n         (-resolve-clause context rest clause)))\n     \n     '[or *] ;; (or ...)\n     (let [[_ & branches] clause\n           _        (check-free-same (bound-vars context) branches clause)\n           contexts (map #(resolve-clause context %) branches)\n           rels     (map #(reduce hash-join (:rels %)) contexts)]\n       (assoc (first contexts) :rels [(reduce sum-rel rels)]))\n     \n     '[or-join [[*] *] *] ;; (or-join [[req-vars] vars] ...)\n     (let [[_ [req-vars & vars] & branches] clause\n           bound (bound-vars context)]\n       (check-bound bound req-vars orig-clause)\n       (check-free-subset bound vars branches)\n       (recur context (list* 'or-join (concat req-vars vars) branches) clause))\n     \n     '[or-join [*] *] ;; (or-join [vars] ...)\n     (let [[_ vars & branches] clause\n           vars         (set vars)\n           _            (check-free-subset (bound-vars context) vars branches)\n           join-context (limit-context context vars)\n           contexts     (map #(-> join-context (resolve-clause %) (limit-context vars)) branches)\n           rels         (map #(reduce hash-join (:rels %)) contexts)\n           sum-rel      (reduce sum-rel rels)]\n       (update context :rels collapse-rels sum-rel))\n     \n     '[and *] ;; (and ...)\n     (let [[_ & clauses] clause]\n       (reduce resolve-clause context clauses))\n     \n     '[not *] ;; (not ...)\n     (let [[_ & clauses] clause\n           bound            (bound-vars context)\n           negation-vars    (collect-vars clauses)\n           _                (when (empty? (set/intersection bound negation-vars))\n                              (raise \"Insufficient bindings: none of \" negation-vars \" is bound in \" orig-clause\n                                {:error :query/where\n                                 :form  orig-clause}))\n           context'         (assoc context :rels [(reduce hash-join (:rels context))])\n           negation-context (reduce resolve-clause context' clauses)\n           negation         (subtract-rel\n                              (single (:rels context'))\n                              (reduce hash-join (:rels negation-context)))]\n       (assoc context' :rels [negation]))\n     \n     '[not-join [*] *] ;; (not-join [vars] ...)\n     (let [[_ vars & clauses] clause\n           bound            (bound-vars context)\n           _                (check-bound bound vars orig-clause)\n           context'         (assoc context :rels [(reduce hash-join (:rels context))])\n           join-context     (limit-context context' vars)\n           negation-context (-> (reduce resolve-clause join-context clauses)\n                                (limit-context vars))\n           negation         (subtract-rel\n                              (single (:rels context'))\n                              (reduce hash-join (:rels negation-context)))]\n       (assoc context' :rels [negation]))\n     \n     '[*] ;; pattern\n     (let [source   *implicit-source*\n           pattern  (resolve-pattern-lookup-refs source clause)\n           relation (lookup-pattern source pattern)]\n       (binding [*lookup-attrs* (if (satisfies? db/IDB source)\n                                  (dynamic-lookup-attrs source pattern)\n                                  *lookup-attrs*)]\n         (update context :rels collapse-rels relation))))))\n\n(defn resolve-clause [context clause]\n  (if (rule? context clause)\n    (if (source? (first clause))\n      (binding [*implicit-source* (get (:sources context) (first clause))]\n        (resolve-clause context (next clause)))\n      (update context :rels collapse-rels (solve-rule context clause)))\n    (-resolve-clause context clause)))\n\n(defn -q [context clauses]\n  (binding [*implicit-source* (get (:sources context) '$)]\n    (reduce resolve-clause context clauses)))\n\n(defn -collect\n  ([context symbols]\n    (let [rels (:rels context)]\n      (-collect [(da/make-array (count symbols))] rels symbols)))\n  ([acc rels symbols]\n    (if-some [rel (first rels)]\n      (let [keep-attrs (select-keys (:attrs rel) symbols)]\n        (if (empty? keep-attrs)\n          (recur acc (next rels) symbols)\n          (let [copy-map (to-array (map #(get keep-attrs %) symbols))\n                len      (count symbols)]\n            (recur (for [#?(:cljs t1\n                            :clj ^{:tag \"[[Ljava.lang.Object;\"} t1) acc\n                         t2 (:tuples rel)]\n                     (let [res (aclone t1)]\n                       (dotimes [i len]\n                         (when-some [idx (aget copy-map i)]\n                           (aset res i (#?(:cljs da/aget :clj get) t2 idx))))\n                       res))\n                   (next rels)\n                   symbols))))\n      acc)))\n\n(defn collect [context symbols]\n  (->> (-collect context symbols)\n       (map vec)\n       set))\n\n(defprotocol IContextResolve\n  (-context-resolve [var context]))\n\n(extend-protocol IContextResolve\n  Variable\n  (-context-resolve [var context]\n    (context-resolve-val context (.-symbol var)))\n  SrcVar\n  (-context-resolve [var context]\n    (get-in context [:sources (.-symbol var)]))\n  PlainSymbol\n  (-context-resolve [var _]\n    (or (get built-in-aggregates (.-symbol var))\n        (resolve-sym (.-symbol var))))\n  Constant\n  (-context-resolve [var _]\n    (.-value var)))\n\n(defn -aggregate [find-elements context tuples]\n  (mapv (fn [element fixed-value i]\n          (if (dp/aggregate? element)\n            (let [f    (-context-resolve (:fn element) context)\n                  args (map #(-context-resolve % context) (butlast (:args element)))\n                  vals (map #(nth % i) tuples)]\n              (apply f (concat args [vals])))\n            fixed-value))\n    find-elements\n    (first tuples)\n    (range)))\n\n(defn- idxs-of [pred coll]\n  (->> (map #(when (pred %1) %2) coll (range))\n       (remove nil?)))\n\n(defn aggregate [find-elements context resultset]\n  (let [group-idxs (idxs-of (complement dp/aggregate?) find-elements)\n        group-fn   (fn [tuple]\n                     (map #(nth tuple %) group-idxs))\n        grouped    (group-by group-fn resultset)]\n    (for [[_ tuples] grouped]\n      (-aggregate find-elements context tuples))))\n\n(defprotocol IPostProcess\n  (-post-process [find tuples]))\n\n(extend-protocol IPostProcess\n  FindRel\n  (-post-process [_ tuples] tuples)\n  FindColl\n  (-post-process [_ tuples] (into [] (map first) tuples))\n  FindScalar\n  (-post-process [_ tuples] (ffirst tuples))\n  FindTuple\n  (-post-process [_ tuples] (first tuples)))\n\n(defn- pull [find-elements context resultset]\n  (let [resolved (for [find find-elements]\n                   (when (dp/pull? find)\n                     [(-context-resolve (:source find) context)\n                      (dpp/parse-pull\n                        (-context-resolve (:pattern find) context))]))]\n    (for [tuple resultset]\n      (mapv (fn [env el]\n              (if env\n                (let [[src spec] env]\n                  (dpa/pull-spec src spec [el] false))\n                el))\n            resolved\n            tuple))))\n\n(def ^:private query-cache (volatile! (datascript.lru/lru lru-cache-size)))\n\n(defn memoized-parse-query [q]\n  (if-some [cached (get @query-cache q nil)]\n    cached\n    (let [qp (dp/parse-query q)]\n      (vswap! query-cache assoc q qp)\n      qp)))\n\n(defn q [q & inputs]\n  (let [parsed-q      (memoized-parse-query q)\n        find          (:qfind parsed-q)\n        find-elements (dp/find-elements find)\n        find-vars     (dp/find-vars find)\n        result-arity  (count find-elements)\n        with          (:qwith parsed-q)\n        ;; TODO utilize parser\n        all-vars      (concat find-vars (map :symbol with))\n        q             (cond-> q\n                        (sequential? q) dp/query->map)\n        wheres        (:where q)\n        context       (-> (Context. [] {} {})\n                        (resolve-ins (:qin parsed-q) inputs))\n        resultset     (-> context\n                        (-q wheres)\n                        (collect all-vars))]\n    (cond->> resultset\n      (:with q)\n        (mapv #(vec (subvec % 0 result-arity)))\n      (some dp/aggregate? find-elements)\n        (aggregate find-elements context)\n      (some dp/pull? find-elements)\n        (pull find-elements context)\n      true\n        (-post-process find))))\n","~:reader-features",["^C",["~:cljs"]],"~:cljc",true,"~:source-map-compact",["^ ","mappings","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","names",["datascript.query/lru-cache-size","this__4439__auto__","k__4440__auto__","this__4441__auto__","k25097","else__4442__auto__","G__25101","cljs.core/Keyword","rels","sources","rules","cljs.core.get","__extmap","this__4458__auto__","f__4459__auto__","init__4460__auto__","cljs.core.reduce","ret__4461__auto__","p__25102","vec__25103","k__4462__auto__","cljs.core.nth","v__4463__auto__","this__4453__auto__","writer__4454__auto__","opts__4455__auto__","pr-pair__4456__auto__","keyval__4457__auto__","cljs.core/pr-sequential-writer","cljs.core.concat","cljs.core/PersistentVector","G__25096","cljs.core/RecordIter","cljs.core/-iterator","cljs.core/nil-iter","this__4437__auto__","__meta","this__4434__auto__","__hash","this__4443__auto__","cljs.core/count","this__4435__auto__","h__4297__auto__","coll__4436__auto__","cljs.core/hash-unordered-coll","this25098","other25099","cljs.core._EQ_","this__4448__auto__","k__4449__auto__","cljs.core/contains?","cljs.core.dissoc","cljs.core/-with-meta","cljs.core.into","cljs.core/not-empty","this__4446__auto__","k__4447__auto__","pred__25107","cljs.core/keyword-identical?","expr__25108","cljs.core.assoc","this__4451__auto__","cljs.core/seq","cljs.core/MapEntry","this__4438__auto__","this__4444__auto__","entry__4445__auto__","cljs.core/vector?","cljs.core/-nth","cljs.core/-conj","datascript.query/Context","this__4482__auto__","cljs.core/List","writer__4483__auto__","cljs.core/-write","G__25100","extmap__4478__auto__","G__25111","cljs.core/record?","datascript.query/->Context","datascript.query/map->Context","k25113","G__25117","attrs","tuples","p__25118","vec__25119","G__25112","this25114","other25115","pred__25123","expr__25124","datascript.query/Relation","G__25116","G__25126","datascript.query/->Relation","datascript.query/map->Relation","datascript.query/single","coll","cljs.core/first","datascript.query/intersect-keys","attrs1","attrs2","clojure.set.intersection","cljs.core/set","cljs.core/keys","var_args","args__4795__auto__","len__4789__auto__","i__4790__auto__","argseq__4796__auto__","cljs.core/IndexedSeq","datascript.query/concatv","seq25128","self__4777__auto__","xs","cljs.core/cat","G__25133","datascript.query/zip","args-arr__4810__auto__","argseq__4811__auto__","seq25130","G__25131","cljs.core/next","G__25132","self__4776__auto__","a","b","cljs.core.mapv","cljs.core/vector","rest","cljs.core.apply","cljs.core/mapv","datascript.query/same-keys?","p1__25134#","cljs.core/every?","p1__25135#","datascript.query/looks-like?","pattern","form","cljs.core/sequential?","cljs.core/Symbol","cljs.core/last","p__25141","vec__25142","pattern-el","form-el","cljs.core.map","cljs.core/butlast","p__25149","vec__25150","datascript.query/source?","sym","cljs.core/name","datascript.query/free-var?","datascript.query/attr?","datascript.query/lookup-ref?","datascript.query/join-tuples","t1","idxs1","t2","idxs2","l1","l2","res","me.tonsky.persistent-sorted-set.arrays/make-array","n__4666__auto__","i","datascript.query/sum-rel","map__25154","cljs.core/PROTOCOL_SENTINEL","cljs.core/hash-map","map__25155","attrs-a","tuples-a","attrs-b","tuples-b","cljs.core/vec","cljs.core.ex_info","cljs.core.pr_str","cljs.core/number?","cljs.core/vals","idxb->idxa","iter__4582__auto__","s__25159","cljs.core/LazySeq","temp__5735__auto__","cljs.core/chunked-seq?","c__4580__auto__","size__4581__auto__","b__25161","cljs.core/chunk-buffer","i__25160","vec__25162","cljs.core/chunk-append","cljs.core/chunk-cons","cljs.core/chunk","iter__25158","cljs.core/chunk-rest","vec__25166","cljs.core/cons","cljs.core/rest","idx-b","tlen","cljs.core/max","tuples'","cljs.core/persistent!","acc","tuple-b","tuple'","seq__25169","chunk__25170","count__25171","i__25172","vec__25179","c__4609__auto__","cljs.core/chunk-first","vec__25182","idx-a","cljs.core.conj_BANG_","cljs.core/transient","all-attrs","cljs.core/zipmap","cljs.core.merge","cljs.core.range","G__25187","G__25188","G__25185","G__25186","G__25190","datascript.query/prod-rel","js/Error","rel1","rel2","cljs.core/to-array","datascript.query/-differ?","seq25192","l","cljs.core.not_EQ_","cljs.core.take","cljs.core.drop","datascript.query/-get-else","db","e","else-val","temp__5737__auto__","datom","datascript.db/-search","datascript.query/-get-some","seq25193","G__25194","G__25195","as","_","temp__5739__auto__","cljs.core/reduced","datascript.query/-missing?","datascript.impl.entity/entity","datascript.query/and-fn","seq25196","args","datascript.query/or-fn","seq25198","cljs.core//","datascript.query/built-ins","cljs.core/=","cljs.core/==","cljs.core/not=","cljs.core/<","cljs.core/>","cljs.core/<=","cljs.core/>=","cljs.core/+","cljs.core/-","cljs.core/*","cljs.core/quot","cljs.core/rem","cljs.core/mod","cljs.core/inc","cljs.core/dec","cljs.core/min","cljs.core/zero?","cljs.core/pos?","cljs.core/neg?","cljs.core/even?","cljs.core/odd?","cljs.core/compare","cljs.core/rand","cljs.core/rand-int","cljs.core/true?","cljs.core/false?","cljs.core/nil?","cljs.core/some?","cljs.core/not","cljs.core/complement","cljs.core/identical?","cljs.core/identity","cljs.core/meta","cljs.core/namespace","cljs.core/type","cljs.core/list","cljs.core/array-map","cljs.core/range","cljs.core/empty?","cljs.core/str","cljs.core/pr-str","cljs.core/print-str","cljs.core/println-str","cljs.core/prn-str","cljs.core/subs","cljs.core/re-find","cljs.core/re-matches","cljs.core/re-seq","cljs.core/re-pattern","clojure.string/blank?","clojure.string/includes?","clojure.string/starts-with?","clojure.string/ends-with?","datascript.query/built-in-aggregates","sum","terms","cljs.core.sort","size","med","G__25205","mean","avg","s__25207","b__25209","i__25208","iter__25206","x","delta","js/Math.sqrt","variance","median","stddev","n","cljs.core.conj","cljs.core/rand-nth","cljs.core.repeatedly","cljs.core/shuffle","cljs.core.distinct","datascript.query/parse-rules","cljs.reader.read_string","cljs.core/group-by","cljs.core/ffirst","datascript.query/empty-rel","binding","vars","datascript.parser/collect-vars-distinct","x__4487__auto__","m__4488__auto__","datascript.query/in->rel","goog/typeOf","m__4485__auto__","cljs.core/missing-protocol","datascript.query/IBinding","value","datascript.parser/BindIgnore","datascript.query.prod_rel","datascript.parser/BindScalar","cljs.core.get_in","cljs.core.into_array","datascript.parser/BindColl","datascript.db/seqable?","datascript.parser/source","p1__25212#","datascript.parser/BindTuple","p1__25213#","p2__25214#","p__25216","vec__25217","datascript.query/resolve-in","context","datascript.parser/SrcVar","cljs.core.update","cljs.core/assoc","datascript.parser/RulesVar","cljs.core/conj","datascript.query/resolve-ins","bindings","values","datascript.query/*lookup-attrs*","datascript.query/*implicit-source*","datascript.query/getter-fn","attr","idx","tuple","eid","datascript.db/entid","me.tonsky.persistent-sorted-set.arrays/array?","datascript.query/tuple-key-fn","getters","cljs.core.list_STAR_","p1__25220#","datascript.query/hash-attrs","key-fn","hash-table","key","cljs.core.assoc_BANG_","datascript.query/hash-join","tuples1","tuples2","common-attrs","common-gtrs1","p1__25222#","common-gtrs2","p1__25223#","keep-attrs1","keep-attrs2","clojure.set.difference","keep-idxs1","keep-idxs2","key-fn1","hash","key-fn2","new-tuples","tuple2","tuple1","datascript.query/subtract-rel","map__25228","map__25229","getters-b","p1__25225#","key-fn-b","getters-a","p1__25226#","key-fn-a","p1__25227#","cljs.core/filterv","G__25232","datascript.query/lookup-pattern-db","search-pattern","p1__25233#","datoms","attr->prop","cljs.core.filter","p__25234","vec__25235","s","datascript.query/matches-pattern?","and__4174__auto__","t","p","datascript.query/lookup-pattern-coll","data","p1__25238#","attr->idx","p__25240","vec__25241","datascript.query/normalize-pattern-clause","clause","datascript.query/lookup-pattern","source","cljs.core/native-satisfies?","datascript.db/ISearch","datascript.query/collapse-rels","new-rel","rel","datascript.query/rel-with-attr","p1__25245#","cljs.core/some","datascript.query/context-resolve-val","fexpr__25246","datascript.query/rel-contains-attrs?","p1__25247#","datascript.query/rel-prod-by-attrs","p1__25248#","production","p1__25249#","cljs.core.remove","datascript.query/-call-fn","f","len","static-args","tuples-args","arg","me.tonsky.persistent-sorted-set.arrays/aclone","tuple-idx","v","datascript.query/resolve-sym","datascript.query/filter-by-pred","vec__25252","vec__25255","seq__25256","first__25257","vec__25258","pred","or__4185__auto__","cljs.core/symbol?","tuple-pred","p1__25251#","datascript.query/bind-by-fn","vec__25262","vec__25265","seq__25266","first__25267","vec__25268","out","datascript.parser/parse-binding","fun","tuple-fn","s__25272","b__25274","i__25273","iter__25271","val","datascript.query/rule?","cljs.core/second","datascript.query/rule-seqid","cljs.core.atom","datascript.query/expand-rule","used-args","vec__25277","seq__25278","first__25279","rule","call-args","seqid","cljs.core.swap_BANG_","branches","s__25281","b__25283","i__25282","vec__25284","seq__25285","first__25286","vec__25287","seq__25288","first__25289","iter__25280","vec__25290","seq__25291","first__25292","vec__25293","seq__25294","first__25295","branch","rule-args","clauses","replacements","p1__25276#","clojure.walk/postwalk","x__21365__auto__","cljs.core.symbol","datascript.query/remove-pairs","ys","pairs","p__25296","vec__25297","y","datascript.query/rule-gen-guards","rule-clause","vec__25301","seq__25302","first__25303","prev-call-args","s__25305","b__25307","i__25306","vec__25308","iter__25304","vec__25311","prev-args","datascript.query/walk-collect","cljs.core/deref","p1__25314#","datascript.query/collect-vars","datascript.query/split-guards","guards","bound-vars","p__25315","vec__25316","vec__25319","seq__25320","first__25321","datascript.query/solve-rule","final-attrs","final-attrs-map","solve","prefix-context","datascript.query/-resolve-clause","empty-rels?","p1__25322#","stack","frame","vec__25341","vec__25344","seq__25345","first__25346","next-clauses","p1__25323#","cljs.core/split-with","datascript.query/-collect","vec__25347","seq__25348","first__25349","vec__25350","active-gs","pending-gs","p1__25324#","prefix-clauses","s__25354","b__25356","i__25355","iter__25353","datascript.query.concatv","datascript.query/resolve-pattern-lookup-refs","datascript.db/IDB","vec__25359","tx","datascript.db/entid-strict","datascript.db/ref?","cljs.core.subvec","datascript.query/dynamic-lookup-attrs","vec__25362","G__25365","datascript.query/limit-rel","attrs'","cljs.core/select-keys","datascript.query/limit-context","p1__25367#","cljs.core.keep","datascript.query/bound-vars","p1__25368#","cljs.core.mapcat","datascript.query/check-bound","bound","clojure.set/subset?","missing","datascript.query/check-free-same","free","p1__25369#","datascript.query/check-free-subset","seq__25370","chunk__25371","count__25372","i__25373","cljs.core.prn","G__25380","datascript.query._resolve_clause","orig-clause","pred__25381","expr__25382","G__25384","G__25385","G__25386","G__25387","G__25388","G__25389","G__25395","G__25396","G__25400","G__25401","G__25409","G__25410","G__25414","G__25415","G__25419","G__25420","G__25424","G__25425","G__25429","G__25430","vec__25390","seq__25391","first__25392","source-sym","*implicit-source*-orig-val__25393","*implicit-source*-temp-val__25394","vec__25397","seq__25398","first__25399","contexts","p1__25375#","datascript.query/resolve-clause","p1__25376#","vec__25403","seq__25404","first__25405","vec__25406","seq__25407","first__25408","req-vars","vec__25411","seq__25412","first__25413","join-context","p1__25377#","p1__25378#","sum-rel","vec__25416","seq__25417","first__25418","vec__25421","seq__25422","first__25423","negation-vars","context'","negation-context","negation","vec__25426","seq__25427","first__25428","relation","*lookup-attrs*-orig-val__25431","*lookup-attrs*-temp-val__25432","*implicit-source*-orig-val__25434","*implicit-source*-temp-val__25435","G__25436","G__25437","datascript.query/-q","*implicit-source*-orig-val__25438","*implicit-source*-temp-val__25439","G__25443","symbols","datascript.query._collect","keep-attrs","copy-map","p1__25441#","s__25445","xs__6292__auto__","iterys__4578__auto__","s__25447","b__25449","i__25448","iter__25446","fs__4579__auto__","iter__25444","cljs.core/aclone","datascript.query/collect","datascript.query/-context-resolve","datascript.query/IContextResolve","var","datascript.parser/Variable","datascript.parser/PlainSymbol","datascript.parser/Constant","datascript.query/-aggregate","find-elements","element","fixed-value","datascript.parser/aggregate?","p1__25451#","vals","p1__25452#","datascript.query/idxs-of","p1__25453#","p2__25454#","datascript.query/aggregate","resultset","group-idxs","group-fn","p1__25455#","grouped","s__25457","b__25459","i__25458","vec__25460","iter__25456","vec__25464","datascript.query/-post-process","datascript.query/IPostProcess","find","datascript.parser/FindRel","datascript.parser/FindColl","datascript.parser/FindScalar","datascript.parser/FindTuple","datascript.query/pull","resolved","s__25468","b__25470","i__25469","iter__25467","datascript.parser/pull?","datascript.pull-parser/parse-pull","s__25472","b__25474","i__25473","iter__25471","env","el","vec__25475","vec__25478","src","spec","datascript.pull-api/pull-spec","datascript.query/query-cache","cljs.core/volatile!","datascript.lru/lru","datascript.query/memoized-parse-query","q","cached","qp","datascript.parser/parse-query","datascript.query/q","seq25482","G__25483","inputs","parsed-q","datascript.parser/find-elements","find-vars","datascript.parser/find-vars","result-arity","with","all-vars","G__25484","datascript.parser/query->map","wheres","G__25485","p1__25481#"]],"~:used-vars",["^C",["~$cljs.core/==","~$cljs.core/to-array","~$cljs.core/mapcat","~$datascript.query/expand-rule","~$datascript.query/looks-like?","~$datascript.query/IPostProcess","~$cljs.core/keep","~$cljs.core/some?","~$datascript.query/-get-some","~$me.tonsky.persistent-sorted-set.arrays/make-array","~$datascript.query/-resolve-clause","~$cljs.core/PROTOCOL_SENTINEL","~$clojure.set/intersection","~$cljs.core/even?","~$datascript.query/lookup-pattern","~$datascript.query/*implicit-source*","~$cljs.core/str","~$cljs.core/<","~$datascript.query/->Relation","~$cljs.core/re-seq","~$datascript.query/-missing?","~$cljs.core/sequential?","~$cljs.core/odd?","~$clojure.string/starts-with?","~$datascript.query/in->rel","~$cljs.core/>","~$cljs.core/shuffle","~$datascript.parser/PlainSymbol","~$cljs.core/pr-sequential-writer","~$cljs.core/pos?","~$datascript.query/lru-cache-size","~$datascript.query/free-var?","~$datascript.query/parse-rules","~$datascript.query/limit-context","~$cljs.core/vector?","~$clojure.string/blank?","~$cljs.core/repeatedly","~$cljs.core/filter","~$cljs.core/=","~$datascript.query/hash-join","~$datascript.query/-call-fn","~$datascript.parser/FindScalar","~$cljs.core/keys","~$cljs.core/dec","~$cljs.core/-assoc","~$cljs.core/into-array","~$cljs.core/re-matches","~$datascript.query/lookup-ref?","~$datascript.query/built-in-aggregates","~$cljs.core/-write","~$cljs.core/array-map","~$datascript.query/dynamic-lookup-attrs","~$datascript.query/same-keys?","~$datascript.parser/RulesVar","~$cljs.core/-deref","~$cljs.core/-iterator","~$datascript.query/rel-with-attr","~$cljs.core/count","~$cljs.core/deref","~$datascript.parser/SrcVar","~$cljs.core/hash-map","~$datascript.query/sum-rel","~$cljs.core/reduce","~$cljs.core/seq","~$datascript.query/join-tuples","~$cljs.core/apply","~$cljs.core/identity","~$datascript.query/Context","~$cljs.core/Keyword","~$cljs.core/prn","~$cljs.core/rand","~$cljs.core/take","~$datascript.query/check-free-subset","~$datascript.query/split-guards","~$cljs.core/group-by","~$datascript.db/ref?","~$cljs.core/last","~$cljs.core/rand-int","~$cljs.core/mapv","~$cljs.core/not=","~$cljs.core/MapEntry","~$cljs.core/distinct","~$cljs.core/dissoc","~$cljs.core/quot","~$datascript.query/filter-by-pred","~$cljs.core/chunk-rest","~$datascript.query/normalize-pattern-clause","~$cljs.core/atom","~$datascript.query/map->Context","~$cljs.core/-with-meta","~$datascript.query/map->Relation","~$datascript.db/IDB","~$cljs.core/concat","~$datascript.query/memoized-parse-query","~$datascript.query/zip","~$cljs.core/pr-str","~$cljs.core/println-str","~$clojure.string/ends-with?","~$datascript.query/collect","~$datascript.query/-context-resolve","~$datascript.query/resolve-clause","~$datascript.impl.entity/entity","~$clojure.string/includes?","~$cljs.core/set","~$datascript.query/lookup-pattern-db","~$datascript.query/-post-process","~$cljs.core/native-satisfies?","~$cljs.core/empty?","~$datascript.query/getter-fn","~$cljs.core/-","~$cljs.core/contains?","~$datascript.query/and-fn","~$datascript.query/collapse-rels","~$cljs.core/into","~$cljs.core/conj","~$datascript.query/idxs-of","~$cljs.core/re-pattern","~$cljs.core/sort","~$cljs.core/zipmap","~$cljs.core/identical?","~$cljs.core/-conj","~$cljs.core/rand-nth","~$cljs.core/update","~$cljs.core/namespace","~$datascript.query/-differ?","~$datascript.parser/BindColl","~$cljs.core/map","~$datascript.query/Relation","~$datascript.lru/lru","~$datascript.parser/Constant","~$cljs.core/filterv","~$cljs.core/PersistentVector","~$cljs.core/true?","~$cljs.core/volatile!","~$cljs.core//","~$datascript.query/matches-pattern?","~$cljs.core/get-in","~$cljs.core/List","~$datascript.parser/BindIgnore","~$cljs.core/vals","~$cljs.core/swap!","~$datascript.query/empty-rel","~$datascript.parser/BindScalar","~$datascript.query/bound-vars","~$cljs.core/number?","~$datascript.query/built-ins","~$cljs.core/get","~$me.tonsky.persistent-sorted-set.arrays/array?","~$datascript.query/hash-attrs","~$datascript.query/check-bound","~$datascript.query/solve-rule","~$datascript.db/entid-strict","~$cljs.core/-nth","~$cljs.core/remove","~$datascript.query/pull","~$cljs.core/not-empty","~$datascript.query/query-cache","~$datascript.query/limit-rel","~$cljs.core/cat","~$cljs.core/<=","~$cljs.core/-vreset!","~$cljs.core/mod","~$cljs.core/conj!","~$datascript.query/bind-by-fn","~$datascript.db/ISearch","~$cljs.core/*","~$datascript.query/resolve-pattern-lookup-refs","~$cljs.core/min","~$cljs.core/missing-protocol","~$cljs.core/re-find","~$cljs.core/prn-str","~$datascript.db/entid","~$datascript.parser/FindRel","~$cljs.core/persistent!","~$datascript.query/rel-prod-by-attrs","~$datascript.query/->Context","~$cljs.core/subvec","~$datascript.query/resolve-in","~$cljs.core/-lookup","~$clojure.walk/postwalk","~$cljs.core/reduced","~$datascript.query/tuple-key-fn","~$datascript.query/source?","~$cljs.core/nil?","~$datascript.parser/FindTuple","~$cljs.core/ex-info","~$cljs.core/zero?","~$cljs.core/meta","~$cljs.core/false?","~$datascript.query/check-free-same","~$datascript.query/-q","~$datascript.parser/Variable","~$datascript.query/-get-else","~$datascript.db/seqable?","~$cljs.core/max","~$datascript.query/aggregate","~$cljs.core/second","~$cljs.core/nil-iter","~$clojure.set/subset?","~$datascript.query/rule?","~$cljs.core/next","~$cljs.core/vec","~$cljs.core/ffirst","~$cljs.core/RecordIter","~$cljs.core/transient","~$datascript.query/resolve-sym","~$datascript.query/remove-pairs","~$datascript.parser/FindColl","~$datascript.query/intersect-keys","~$cljs.core/not","~$cljs.core/complement","~$cljs.core/neg?","~$cljs.core/compare","~$datascript.query/walk-collect","~$datascript.parser/aggregate?","~$datascript.query/attr?","~$datascript.parser/BindTuple","~$cljs.core/rem","~$datascript.query/-collect","~$datascript.query/IBinding","~$cljs.core/assoc","~$datascript.query/IContextResolve","~$datascript.query/rule-seqid","~$datascript.query/lookup-pattern-coll","~$cljs.core/Symbol","~$cljs.core/range","~$datascript.query/or-fn","~$cljs.core/print-str","~$datascript.query/rule-gen-guards","~$datascript.query/concatv","~$datascript.query/*lookup-attrs*","~$cljs.core/first","~$cljs.core/butlast","~$datascript.parser/source","~$datascript.query/resolve-ins","~$cljs.core/assoc!","~$cljs.core/>=","~$datascript.query/single","~$cljs.core/list","~$cljs.core/name","~$cljs.core/subs","~$cljs.core/+","~$cljs.core/every?","~$datascript.query/subtract-rel","~$js/Error","~$cljs.core/list*","~$cljs.core/vector","~$datascript.query/-aggregate","~$cljs.core/type","~$cljs.core/inc","~$datascript.query/prod-rel","~$cljs.core/some","~$datascript.query/rel-contains-attrs?","~$datascript.query/q","~$cljs.core/drop","~$datascript.query/context-resolve-val","~$cljs.core/chunked-seq?","~$datascript.query/collect-vars"]]],"~:cache-keys",["~#cmap",[["^1O","datascript/db.cljc"],[1590236302000,"~:shadow.build.compiler/resolve",["^ ","~:require-id",null,"~:deps-ids",["^C",[]],"~:deps-syms",["^S","^R","~$goog.array","^U","~$clojure.data","~$me.tonsky.persistent-sorted-set","^K"]]],["^1O","goog/dom/tagname.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","~$goog.dom.HtmlElement"]]],["^1O","datascript/parser.cljc"],[1590236302000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R","^M","^A"]]],["^1O","cljs/tools/reader/impl/utils.cljs"],[1569150464000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R","^Z","~$goog.string"]]],["^1O","goog/math/math.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^7[","~$goog.asserts"]]],["^1O","goog/html/trustedtypes.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S"]]],["^1O","goog/labs/useragent/browser.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^7[","~$goog.labs.userAgent.util","~$goog.object","~$goog.string.internal"]]],["^1O","goog/html/safeurl.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^84","~$goog.fs.url","~$goog.html.TrustedResourceUrl","~$goog.i18n.bidi.Dir","~$goog.i18n.bidi.DirectionalString","~$goog.string.Const","~$goog.string.TypedString","^87"]]],["^1O","goog/array/array.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^84"]]],["^1O","goog/debug/error.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S"]]],["^1O","cljs/tools/reader/edn.cljs"],[1569150464000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R","~$cljs.tools.reader.impl.errors","~$cljs.tools.reader.reader-types","~$cljs.tools.reader.impl.utils","~$cljs.tools.reader.impl.commons","~$cljs.tools.reader","^83","~$goog.string.StringBuffer"]]],["^1O","datascript/query.cljc"],[1590236302000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R","^12","^M","^Z","^U","^A","^K","^X","^10","^V","^Q","^O"]]],["^1O","goog/dom/nodetype.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S"]]],["^1O","cljs/tools/reader/impl/inspect.cljs"],[1569150464000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R"]]],["^1O","cljs/tools/reader.cljs"],[1569150464000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R","^8?","^8@","^8A","^8>","^7[","^83","^8C"]]],["^1O","goog/string/typedstring.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S"]]],["^1O","goog/object/object.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S"]]],["^1O","goog/dom/asserts.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^84"]]],"~:SHADOW-TIMESTAMP",[1585692398000,1585692398000,1579838325000],["^1O","goog/math/long.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^84","~$goog.reflect"]]],["^1O","goog/html/trustedresourceurl.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^84","~$goog.html.trustedtypes","^8:","^8;","^8<","^8="]]],["^1O","goog/string/internal.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S"]]],["^1O","datascript/pull_api.cljc"],[1590236302000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R","^A","^O"]]],["^1O","goog/functions/functions.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S"]]],["^1O","goog/html/safestyle.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^7[","^84","~$goog.html.SafeUrl","^8<","^8=","^87"]]],["^1O","goog/dom/safe.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^84","~$goog.dom.asserts","~$goog.functions","~$goog.html.SafeHtml","~$goog.html.SafeScript","~$goog.html.SafeStyle","^8G","^89","~$goog.html.uncheckedconversions","^8<","^87"]]],["^1O","clojure/walk.cljs"],[1579838325000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R"]]],["^1O","goog/structs/map.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","~$goog.iter.Iterator","~$goog.iter.StopIteration"]]],["^1O","goog/html/safehtml.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^7[","^84","~$goog.dom.TagName","~$goog.dom.tags","^8K","^8L","~$goog.html.SafeStyleSheet","^8G","^89","^8F","^8:","^8;","~$goog.labs.userAgent.browser","^86","^8<","^8=","^87"]]],["^1O","goog/dom/tags.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^86"]]],["^1O","datascript/impl/entity.cljc"],[1590236302000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R","^A"]]],["^1O","me/tonsky/persistent_sorted_set/arrays.cljc"],[1589003956000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R","^Z"]]],["^1O","cljs/reader.cljs"],[1579838325000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R","^86","^8B","~$cljs.tools.reader.edn","^8C"]]],["^1O","goog/asserts/asserts.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","~$goog.debug.Error","~$goog.dom.NodeType"]]],["^1O","me/tonsky/persistent_sorted_set.cljs"],[1589003956000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R","^K"]]],["^1O","goog/uri/uri.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^7[","^84","^83","~$goog.structs","~$goog.structs.Map","~$goog.uri.utils","~$goog.uri.utils.ComponentIndex","~$goog.uri.utils.StandardQueryParam"]]],["^1O","goog/i18n/bidi.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S"]]],["^1O","goog/fs/url.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S"]]],["^1O","goog/base.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",[]]],["^1O","goog/structs/structs.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^7[","^86"]]],["^1O","cljs/tools/reader/impl/errors.cljs"],[1569150464000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R","^8?","^Z","~$cljs.tools.reader.impl.inspect"]]],["^1O","clojure/string.cljs"],[1579838325000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R","^83","^8C"]]],["^1O","datascript/pull_parser.cljc"],[1590236302000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R","^A"]]],["^1O","goog/string/string.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","~$goog.dom.safe","^8M","^8<","^87"]]],["^1O","clojure/data.cljs"],[1579838325000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R","^M"]]],["^1O","goog/reflect/reflect.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S"]]],["^1O","goog/labs/useragent/util.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^87"]]],["^1O","goog/string/stringbuffer.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S"]]],["^1O","cljs/tools/reader/reader_types.cljs"],[1569150464000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R","^8@","^83","^8C"]]],["^1O","goog/iter/iter.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^7[","^84","^8I","~$goog.math"]]],["^1O","goog/html/uncheckedconversions.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^84","^8J","^8K","^8L","^8R","^8G","^89","^8<","^87"]]],["^1O","datascript/lru.cljc"],[1590236302000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R"]]],["^1O","cljs/tools/reader/impl/commons.cljs"],[1569150464000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R","^8>","^8?","^8@"]]],["^1O","goog/dom/htmlelement.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S"]]],["^1O","cljs/core.cljs"],[1579838325000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","~$goog.math.Long","~$goog.math.Integer","^83","^86","^7[","~$goog.Uri","^8C"]]],["^1O","goog/html/safescript.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^84","^8F","^8<","^8="]]],["^1O","goog/html/safestylesheet.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^7[","^84","^8L","^86","^8<","^8=","^87"]]],["^1O","goog/math/integer.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^8E"]]],["^1O","clojure/set.cljs"],[1579838325000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^R"]]],["^1O","goog/uri/utils.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^7[","^84","^83"]]],["^1O","goog/string/const.js"],[1579837703000,"^7W",["^ ","^7X",null,"^7Y",["^C",[]],"^7Z",["^S","^84","^8="]]]]],"~:clj-info",["^ ","jar:file:/Users/clojure/.m2/repository/org/clojure/tools.reader/1.3.2/tools.reader-1.3.2.jar!/clojure/tools/reader/reader_types.clj",1569150464000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/source_map/base64_vlq.clj",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar!/clojure/core.clj",1569048150000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/source_map/base64.clj",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar!/clojure/edn.clj",1569048150000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/source_map.clj",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar!/clojure/string.clj",1569048150000,"jar:file:/Users/clojure/.m2/repository/org/clojure/tools.reader/1.3.2/tools.reader-1.3.2.jar!/clojure/tools/reader/impl/inspect.clj",1569150464000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar!/clojure/instant.clj",1569048150000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar!/clojure/pprint.clj",1569048150000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar!/clojure/set.clj",1569048150000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar!/clojure/java/io.clj",1569048150000,"jar:file:/Users/clojure/.m2/repository/org/clojure/tools.reader/1.3.2/tools.reader-1.3.2.jar!/clojure/tools/reader.clj",1569150464000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/env.cljc",1579838325000,"jar:file:/Users/clojure/.m2/repository/persistent-sorted-set/persistent-sorted-set/0.1.2/persistent-sorted-set-0.1.2.jar!/me/tonsky/persistent_sorted_set.clj",1589003956000,"jar:file:/Users/clojure/.m2/repository/persistent-sorted-set/persistent-sorted-set/0.1.2/persistent-sorted-set-0.1.2.jar!/me/tonsky/persistent_sorted_set/arrays.cljc",1589003956000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/compiler.cljc",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/util.cljc",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/tagged_literals.cljc",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/tools.reader/1.3.2/tools.reader-1.3.2.jar!/cljs/tools/reader/reader_types.clj",1569150464000,"jar:file:/Users/clojure/.m2/repository/datascript/datascript/0.18.13/datascript-0.18.13.jar!/datascript/db.cljc",1590236302000,"jar:file:/Users/clojure/.m2/repository/datascript/datascript/0.18.13/datascript-0.18.13.jar!/datascript/parser.cljc",1590236302000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/externs.clj",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/tools.reader/1.3.2/tools.reader-1.3.2.jar!/clojure/tools/reader/default_data_readers.clj",1569150464000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/reader.clj",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/data.json/0.2.6/data.json-0.2.6.jar!/clojure/data/json.clj",1569048105000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/analyzer.cljc",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/core.cljc",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/js_deps.cljc",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/tools.reader/1.3.2/tools.reader-1.3.2.jar!/clojure/tools/reader/impl/errors.clj",1569150464000],"~:analyzer",["^ ","^3",null,"^4",["^ "],"^5",["^ ","^6","datascript/query.cljc","^7",1,"^8",14,"^9",1,"^:",30,"^;",true],"^<",["^ ","^=","^>"],"~:shadow/protocol-prefixes",["^C",["datascript$query$IContextResolve$","datascript$query$IBinding$","datascript$query$IPostProcess$"]],"^?",["^ ","^@","^A"],"^B",["^C",[]],"~:shadow/js-access-properties",["^C",["sqrt"]],"^D","^E","^H",null,"^I",["^ ","^J","^K","^L","^M","^N","^O","^P","^Q","^R","^R","^S","^S","^T","^U","^V","^V","^W","^A","^M","^M","^X","^X","^A","^A","^K","^K","^O","^O","^Q","^Q","^Y","^Z","^Z","^Z","^[","^10","^11","^V","^12","^12","^U","^U","^13","^12","^10","^10"],"^14",["^C",["^15"]],"~:shadow/js-access-global",["^C",["Math","Error"]],"^16",["^ ","^17","^V","^18","^V","^19","^V","^1:","^V","^1;","^V","^1<","^V","^1=","^V","^1>","^V","^1?","^V","^1@","^V","^1A","^V","^1B","^V","^1C","^V"],"~:defs",["^ ","~$bound-vars",["^ ","~:protocol-inline",null,"^5",["^ ","^6","datascript/query.cljc","^7",701,"^8",7,"^9",701,"^:",17,"~:arglists",["^1F",["~$quote",["^1F",[["~$context"]]]]]],"^D","^5:","^6","datascript/query.cljc","^:",17,"~:method-params",["^1F",[["^:2"]]],"~:protocol-impl",null,"~:arglists-meta",["^1F",[null,null]],"^8",1,"~:variadic?",false,"^7",701,"~:ret-tag",["^C",[null,"~$clj","~$any"]],"^9",701,"~:max-fixed-arity",1,"~:fn-var",true,"^:0",["^1F",["^:1",["^1F",[["^:2"]]]]]],"~$solve-rule",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",615,"^8",7,"^9",615,"^:",17,"^:0",["^1F",["^:1",["^1F",[["^:2","~$clause"]]]]]],"^D","^5A","^6","datascript/query.cljc","^:",17,"^:3",["^1F",[["^:2","^:="]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",615,"^:7","^:9","^9",615,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:2","^:="]]]]]],"~$matches-pattern?",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",430,"^8",7,"^9",430,"^:",23,"^:0",["^1F",["^:1",["^1F",[["~$pattern","~$tuple"]]]]]],"^D","^52","^6","datascript/query.cljc","^:",23,"^:3",["^1F",[["^:?","^:@"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",430,"^:7","~$boolean","^9",430,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:?","^:@"]]]]]],"~$aggregate",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",885,"^8",7,"^9",885,"^:",16,"^:0",["^1F",["^:1",["^1F",[["~$find-elements","^:2","~$resultset"]]]]]],"^D","^6B","^6","datascript/query.cljc","^:",16,"^:3",["^1F",[["^:C","^:2","^:D"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",885,"^:7","~$cljs.core/LazySeq","^9",885,"^::",3,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:C","^:2","^:D"]]]]]],"~$query-cache",["^ ","^5",["^ ","^6","datascript/query.cljc","^7",921,"^8",16,"^9",921,"^:",27,"~:private",true],"^:G",true,"^D","^5G","^6","datascript/query.cljc","^:",27,"^8",1,"^7",921,"^9",921,"~:tag","~$cljs.core/Volatile"],"~$rel-prod-by-attrs",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",481,"^8",8,"^9",481,"^:",25,"^:G",true,"^:0",["^1F",["^:1",["^1F",[["^:2","~$attrs"]]]]]],"^:G",true,"^D","^5Y","^6","datascript/query.cljc","^:",25,"^:3",["^1F",[["^:2","^:K"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",481,"^:7","~$cljs.core/IVector","^9",481,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:2","^:K"]]]]]],"~$limit-rel",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",692,"^8",7,"^9",692,"^:",16,"^:0",["^1F",["^:1",["^1F",[["~$rel","~$vars"]]]]]],"^D","^5H","^6","datascript/query.cljc","^:",16,"^:3",["^1F",[["^:N","^:O"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",692,"^:7",["^C",["^:8","^:9","~$clj-nil"]],"^9",692,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:N","^:O"]]]]]],"~$empty-rel",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",284,"^8",7,"^9",284,"^:",16,"^:0",["^1F",["^:1",["^1F",[["~$binding"]]]]]],"^D","^58","^6","datascript/query.cljc","^:",16,"^:3",["^1F",[["^:R"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",284,"^:7","^4V","^9",284,"^::",1,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:R"]]]]]],"~$built-ins",["^ ","^D","^5<","^6","datascript/query.cljc","^7",194,"^8",1,"^9",194,"^:",15,"^5",["^ ","^6","datascript/query.cljc","^7",194,"^8",6,"^9",194,"^:",15],"^:H","~$cljs.core/IMap"],"~$pull",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",906,"^8",8,"^9",906,"^:",12,"^:G",true,"^:0",["^1F",["^:1",["^1F",[["^:C","^:2","^:D"]]]]]],"^:G",true,"^D","^5E","^6","datascript/query.cljc","^:",12,"^:3",["^1F",[["^:C","^:2","^:D"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",906,"^:7","^:E","^9",906,"^::",3,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:C","^:2","^:D"]]]]]],"~$->Context",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^:",19,"^8",12,"~:internal-ctor",true,"~:factory","~:positional","^7",28,"^9",28,"^:0",["^1F",["^:1",["^1F",[["~$rels","~$sources","~$rules"]]]]],"~:doc","Positional factory function for datascript.query/Context."],"^D","^5Z","^6","datascript/query.cljc","^:",19,"^:3",["^1F",[["^:Z","^:[","^;0"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:W",true,"^:6",false,"^:X","^:Y","^7",28,"^:7","^3F","^9",28,"^::",3,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:Z","^:[","^;0"]]]]],"^;1","Positional factory function for datascript.query/Context."],"~$tuple-key-fn",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",364,"^8",7,"^9",364,"^:",19,"^:0",["^1F",["^:1",["^1F",[["~$getters"]]]]]],"^D","^64","^6","datascript/query.cljc","^:",19,"^:3",["^1F",[["^;3"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",364,"^:7",["^C",["^:9","~$function","^:P"]],"^9",364,"^::",1,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^;3"]]]]]],"~$resolve-pattern-lookup-refs",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",671,"^8",7,"^9",671,"^:",34,"^:0",["^1F",["^:1",["^1F",[["~$source","^:?"]]]]]],"^D","^5Q","^6","datascript/query.cljc","^:",34,"^:3",["^1F",[["^;6","^:?"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",671,"^:7",["^C",[null,"~$cljs.core/Subvec"]],"^9",671,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^;6","^:?"]]]]]],"~$bind-by-fn",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",539,"^8",7,"^9",539,"^:",17,"^:0",["^1F",["^:1",["^1F",[["^:2","^:="]]]]]],"^D","^5N","^6","datascript/query.cljc","^:",17,"^:3",["^1F",[["^:2","^:="]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",539,"^:7",["^C",["^:8","^:9"]],"^9",539,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:2","^:="]]]]]],"~$check-free-same",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",712,"^8",7,"^9",712,"^:",22,"^:0",["^1F",["^:1",["^1F",[["~$bound","~$branches","~$form"]]]]]],"^D","^6<","^6","datascript/query.cljc","^:",22,"^:3",["^1F",[["^;:","^;;","^;<"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",712,"^:7","^:P","^9",712,"^::",3,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^;:","^;;","^;<"]]]]]],"~$resolve-in",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",327,"^8",7,"^9",327,"^:",17,"^:0",["^1F",["^:1",["^1F",[["^:2",["^:R","~$value"]]]]]]],"^D","^60","^6","datascript/query.cljc","^:",17,"^:3",["^1F",[["^:2","~$p__25216"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",327,"^:7",["^C",["^:8","^:9"]],"^9",327,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:2",["^:R","^;>"]]]]]]],"~$rule?",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",564,"^8",7,"^9",564,"^:",12,"^:0",["^1F",["^:1",["^1F",[["^:2","^:="]]]]]],"^D","^6F","^6","datascript/query.cljc","^:",12,"^:3",["^1F",[["^:2","^:="]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",564,"^:7","^:A","^9",564,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:2","^:="]]]]]],"~$source?",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",80,"^8",7,"^9",80,"^:",14,"^:0",["^1F",["^:1",["^1F",[["~$sym"]]]]]],"^D","^65","^6","datascript/query.cljc","^:",14,"^:3",["^1F",[["^;B"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",80,"^:7","^:A","^9",80,"^::",1,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^;B"]]]]]],"~$-q",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",819,"^8",7,"^9",819,"^:",9,"^:0",["^1F",["^:1",["^1F",[["^:2","~$clauses"]]]]]],"^D","^6=","^6","datascript/query.cljc","^:",9,"^:3",["^1F",[["^:2","^;D"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",819,"^9",819,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:2","^;D"]]]]]],"~$attr?",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",88,"^8",7,"^9",88,"^:",12,"^:0",["^1F",["^:1",["^1F",[["^;<"]]]]]],"^D","^6V","^6","datascript/query.cljc","^:",12,"^:3",["^1F",[["^;<"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",88,"^:7","^:A","^9",88,"^::",1,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^;<"]]]]]],"~$-get-else",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",165,"^8",8,"^9",165,"^:",17,"^:G",true,"^:0",["^1F",["^:1",["^1F",[["^W","~$e","~$a","~$else-val"]]]]]],"^:G",true,"^D","^6?","^6","datascript/query.cljc","^:",17,"^:3",["^1F",[["^W","~$e","~$a","^;G"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",165,"^:7",["^C",[null,"^:9"]],"^9",165,"^::",4,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^W","~$e","~$a","^;G"]]]]]],"~$intersect-keys",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",44,"^8",7,"^9",44,"^:",21,"^:0",["^1F",["^:1",["^1F",[["~$attrs1","~$attrs2"]]]]]],"^D","^6O","^6","datascript/query.cljc","^:",21,"^:3",["^1F",[["^;I","^;J"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",44,"^:7",["^C",[null,"^:9"]],"^9",44,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^;I","^;J"]]]]]],"~$or-fn",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",190,"^8",8,"^9",190,"^:",13,"^:G",true,"^:0",["^1F",["^:1",["^1F",[["~$&","~$args"]]]]],"~:top-fn",["^ ","^:6",true,"~:fixed-arity",0,"^::",0,"^:3",[["^1F",["^;L"]]],"^:0",["^1F",[["~$&","^;L"]]],"^:5",["^1F",[null]]]],"^:G",true,"^D","^75","^6","datascript/query.cljc","^:",13,"^;M",["^ ","^:6",true,"^;N",0,"^::",0,"^:3",[["^1F",["^;L"]]],"^:0",["^1F",[["~$&","^;L"]]],"^:5",["^1F",[null]]],"^:3",[["^1F",["^;L"]]],"^:4",null,"^;N",0,"^:5",["^1F",[null]],"^8",1,"^:6",true,"~:methods",[["^ ","^;N",0,"^:6",true,"^:H",["^C",[null,"^:9"]]]],"^7",190,"^:7","^:9","^9",190,"^::",0,"^:;",true,"^:0",["^1F",[["~$&","^;L"]]]],"~$rule-seqid",["^ ","^D","^71","^6","datascript/query.cljc","^7",571,"^8",1,"^9",571,"^:",16,"^5",["^ ","^6","datascript/query.cljc","^7",571,"^8",6,"^9",571,"^:",16],"^:H","~$cljs.core/Atom"],"~$-collect",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",823,"^8",7,"^9",823,"^:",15,"^:0",["^1F",["^:1",["^1F",[["^:2","~$symbols"],["~$acc","^:Z","^;S"]]]]],"^;M",["^ ","^:6",false,"^;N",3,"^::",3,"^:3",["^1F",[["^:2","^;S"],["^;T","^:Z","^;S"]]],"^:0",["^1F",[["^:2","^;S"],["^;T","^:Z","^;S"]]],"^:5",["^1F",[null,null]]]],"^D","^6Y","^6","datascript/query.cljc","^:",15,"^;M",["^ ","^:6",false,"^;N",3,"^::",3,"^:3",["^1F",[["^:2","^;S"],["^;T","^:Z","^;S"]]],"^:0",["^1F",[["^:2","^;S"],["^;T","^:Z","^;S"]]],"^:5",["^1F",[null,null]]],"^:3",["^1F",[["^:2","^;S"],["^;T","^:Z","^;S"]]],"^:4",null,"^;N",3,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^;O",[["^ ","^;N",2,"^:6",false,"^:H","^:9"],["^ ","^;N",3,"^:6",false]],"^7",823,"^9",823,"^::",3,"^:;",true,"^:0",["^1F",[["^:2","^;S"],["^;T","^:Z","^;S"]]]],"~$q",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",930,"^8",7,"^9",930,"^:",8,"^:0",["^1F",["^:1",["^1F",[["~$q","~$&","~$inputs"]]]]],"^;M",["^ ","^:6",true,"^;N",1,"^::",1,"^:3",[["^1F",["~$q","^;U"]]],"^:0",["^1F",[["~$q","~$&","^;U"]]],"^:5",["^1F",[null]]]],"^D","^7P","^6","datascript/query.cljc","^:",8,"^;M",["^ ","^:6",true,"^;N",1,"^::",1,"^:3",[["^1F",["~$q","^;U"]]],"^:0",["^1F",[["~$q","~$&","^;U"]]],"^:5",["^1F",[null]]],"^:3",[["^1F",["~$q","^;U"]]],"^:4",null,"^;N",1,"^:5",["^1F",[null]],"^8",1,"^:6",true,"^;O",[["^ ","^;N",1,"^:6",true,"^:H","^:9"]],"^7",930,"^:7","^:9","^9",930,"^::",1,"^:;",true,"^:0",["^1F",[["~$q","~$&","^;U"]]]],"~$context-resolve-val",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",473,"^8",8,"^9",473,"^:",27,"^:G",true,"^:0",["^1F",["^:1",["^1F",[["^:2","^;B"]]]]]],"^:G",true,"^D","^7R","^6","datascript/query.cljc","^:",27,"^:3",["^1F",[["^:2","^;B"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",473,"^:7",["^C",["^:9","^:P"]],"^9",473,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:2","^;B"]]]]]],"~$walk-collect",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",601,"^8",7,"^9",601,"^:",19,"^:0",["^1F",["^:1",["^1F",[["^;<","~$pred"]]]]]],"^D","^6T","^6","datascript/query.cljc","^:",19,"^:3",["^1F",[["^;<","^;X"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",601,"^:7","^:9","^9",601,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^;<","^;X"]]]]]],"~$lookup-pattern-coll",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",441,"^8",7,"^9",441,"^:",26,"^:0",["^1F",["^:1",["^1F",[["~$coll","^:?"]]]]]],"^D","^72","^6","datascript/query.cljc","^:",26,"^:3",["^1F",[["^;Z","^:?"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",441,"^:7","^4V","^9",441,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^;Z","^:?"]]]]]],"~$IBinding",["^ ","^5",["^ ","~:protocol-symbol",true,"^6","datascript/query.cljc","^:",22,"^8",14,"^7",289,"~:protocol-info",["^ ","^;O",["^ ","~$in->rel",[["^:R","^;>"]]]],"^9",289,"~:sigs",["^ ","~:in->rel",["^ ","^D","^<2","^:0",["^1F",[["^:R","^;>"]]],"^;1",null]],"~:jsdoc",["^1F",["@interface"]]],"^<0",true,"^D","^6Z","^6","datascript/query.cljc","^:",22,"^8",1,"^7",289,"^<1",["^ ","^;O",["^ ","^<2",[["^:R","^;>"]]]],"~:info",null,"^9",289,"^:H","^:9","^<3",["^ ","^<4",["^ ","^D","^<2","^:0",["^1F",[["^:R","^;>"]]],"^;1",null]],"~:impls",["^C",["^4T","^55","^59","^6W"]],"^<5",["^1F",["@interface"]]],"~$IContextResolve",["^ ","^5",["^ ","^<0",true,"^6","datascript/query.cljc","^:",29,"^8",14,"^7",851,"^<1",["^ ","^;O",["^ ","~$-context-resolve",[["~$var","^:2"]]]],"^9",851,"^<3",["^ ","~:-context-resolve",["^ ","^D","^<9","^:0",["^1F",[["^<:","^:2"]]],"^;1",null]],"^<5",["^1F",["@interface"]]],"^<0",true,"^D","^70","^6","datascript/query.cljc","^:",29,"^8",1,"^7",851,"^<1",["^ ","^;O",["^ ","^<9",[["^<:","^:2"]]]],"^<6",null,"^9",851,"^:H","^:9","^<3",["^ ","^<;",["^ ","^D","^<9","^:0",["^1F",[["^<:","^:2"]]],"^;1",null]],"^<7",["^C",["^2J","^3>","^4X","^6>"]],"^<5",["^1F",["@interface"]]],"~$rule-gen-guards",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",594,"^8",7,"^9",594,"^:",22,"^:0",["^1F",["^:1",["^1F",[["~$rule-clause","~$used-args"]]]]]],"^D","^77","^6","datascript/query.cljc","^:",22,"^:3",["^1F",[["^<=","^<>"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",594,"^:7","^:E","^9",594,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^<=","^<>"]]]]]],"~$resolve-ins",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",338,"^8",7,"^9",338,"^:",18,"^:0",["^1F",["^:1",["^1F",[["^:2","~$bindings","~$values"]]]]]],"^D","^7=","^6","datascript/query.cljc","^:",18,"^:3",["^1F",[["^:2","^<@","^<A"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",338,"^:7",["^C",[null,"^:9"]],"^9",338,"^::",3,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:2","^<@","^<A"]]]]]],"~$resolve-sym",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",519,"^8",8,"^9",519,"^:",19,"^:G",true,"^:0",["^1F",["^:1",["^1F",[["^;B"]]]]]],"^:G",true,"^D","^6L","^6","datascript/query.cljc","^:",19,"^:3",["^1F",[["^;B"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",519,"^:7","^:P","^9",519,"^::",1,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^;B"]]]]]],"~$remove-pairs",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",588,"^8",7,"^9",588,"^:",19,"^:0",["^1F",["^:1",["^1F",[["~$xs","~$ys"]]]]]],"^D","^6M","^6","datascript/query.cljc","^:",19,"^:3",["^1F",[["^<D","^<E"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",588,"^:7","^:L","^9",588,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^<D","^<E"]]]]]],"~$single",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",40,"^8",7,"^9",40,"^:",13,"^:0",["^1F",["^:1",["^1F",[["^;Z"]]]]]],"^D","^7@","^6","datascript/query.cljc","^:",13,"^:3",["^1F",[["^;Z"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",40,"^:7",["^C",["^:9","^:P"]],"^9",40,"^::",1,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^;Z"]]]]]],"~$lru-cache-size",["^ ","^5",["^ ","^6","datascript/query.cljc","^7",22,"^8",14,"^9",22,"^:",28,"~:const",true],"^D","^2M","^6","datascript/query.cljc","^:",28,"~:const-expr",["^ ","^F","^<H","~:val",100,"~:env",["^ ","~:context","~:expr"],"^1E",100,"^:H","~$number"],"^8",1,"^<H",true,"^7",22,"^9",22,"^:H","^<N"],"~$concatv",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",48,"^8",7,"^9",48,"^:",14,"^:0",["^1F",["^:1",["^1F",[["~$&","^<D"]]]]],"^;M",["^ ","^:6",true,"^;N",0,"^::",0,"^:3",[["^1F",["^<D"]]],"^:0",["^1F",[["~$&","^<D"]]],"^:5",["^1F",[null]]]],"^D","^78","^6","datascript/query.cljc","^:",14,"^;M",["^ ","^:6",true,"^;N",0,"^::",0,"^:3",[["^1F",["^<D"]]],"^:0",["^1F",[["~$&","^<D"]]],"^:5",["^1F",[null]]],"^:3",[["^1F",["^<D"]]],"^:4",null,"^;N",0,"^:5",["^1F",[null]],"^8",1,"^:6",true,"^;O",[["^ ","^;N",0,"^:6",true,"^:H",["^C",["^:8","^:9"]]]],"^7",48,"^:7","^:9","^9",48,"^::",0,"^:;",true,"^:0",["^1F",[["~$&","^<D"]]]],"~$-missing?",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",182,"^8",8,"^9",182,"^:",17,"^:G",true,"^:0",["^1F",["^:1",["^1F",[["^W","~$e","~$a"]]]]]],"^:G",true,"^D","^2C","^6","datascript/query.cljc","^:",17,"^:3",["^1F",[["^W","~$e","~$a"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",182,"^:7","^:A","^9",182,"^::",3,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^W","~$e","~$a"]]]]]],"~$subtract-rel",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",409,"^8",7,"^9",409,"^:",19,"^:0",["^1F",["^:1",["^1F",[["~$a","~$b"]]]]]],"^D","^7F","^6","datascript/query.cljc","^:",19,"^:3",["^1F",[["~$a","~$b"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",409,"^:7",["^C",["^:8","^:9"]],"^9",409,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["~$a","~$b"]]]]]],"~$rel-contains-attrs?",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",478,"^8",8,"^9",478,"^:",27,"^:G",true,"^:0",["^1F",["^:1",["^1F",[["^:N","^:K"]]]]]],"^:G",true,"^D","^7O","^6","datascript/query.cljc","^:",27,"^:3",["^1F",[["^:N","^:K"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",478,"^:7",["^C",["^:9","^:P"]],"^9",478,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:N","^:K"]]]]]],"~$collect-vars",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",606,"^8",7,"^9",606,"^:",19,"^:0",["^1F",["^:1",["^1F",[["^:="]]]]]],"^D","^7T","^6","datascript/query.cljc","^:",19,"^:3",["^1F",[["^:="]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",606,"^:7",["^C",["^:8","^:9","~$cljs.core/ISet","~$cljs.core/MetaFn","^:P"]],"^9",606,"^::",1,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:="]]]]]],"~$prod-rel",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",141,"^8",7,"^9",141,"^:",15,"^:0",["^1F",["^:1",["^1F",[[],["~$rel1","~$rel2"]]]]],"^;M",["^ ","^:6",false,"^;N",2,"^::",2,"^:3",["^1F",[[],["^<W","^<X"]]],"^:0",["^1F",[[],["^<W","^<X"]]],"^:5",["^1F",[null,null]]]],"^D","^7M","^6","datascript/query.cljc","^:",15,"^;M",["^ ","^:6",false,"^;N",2,"^::",2,"^:3",["^1F",[[],["^<W","^<X"]]],"^:0",["^1F",[[],["^<W","^<X"]]],"^:5",["^1F",[null,null]]],"^:3",["^1F",[[],["^<W","^<X"]]],"^:4",null,"^;N",2,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^;O",[["^ ","^;N",0,"^:6",false,"^:H","^4V"],["^ ","^;N",2,"^:6",false,"^:H","^4V"]],"^7",141,"^9",141,"^::",2,"^:;",true,"^:0",["^1F",[[],["^<W","^<X"]]]],"~$lookup-pattern",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",453,"^8",7,"^9",453,"^:",21,"^:0",["^1F",["^:1",["^1F",[["^;6","^:?"]]]]]],"^D","^2=","^6","datascript/query.cljc","^:",21,"^:3",["^1F",[["^;6","^:?"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",453,"^:7","^4V","^9",453,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^;6","^:?"]]]]]],"~$-aggregate",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",869,"^8",7,"^9",869,"^:",17,"^:0",["^1F",["^:1",["^1F",[["^:C","^:2","~$tuples"]]]]]],"^D","^7J","^6","datascript/query.cljc","^:",17,"^:3",["^1F",[["^:C","^:2","^<["]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",869,"^:7",["^C",[null,"^:8","^:9"]],"^9",869,"^::",3,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:C","^:2","^<["]]]]]],"~$-resolve-clause",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",730,"^8",7,"^9",730,"^:",22,"^:0",["^1F",["^:1",["^1F",[["^:2","^:="],["^:2","^:=","~$orig-clause"]]]]],"^;M",["^ ","^:6",false,"^;N",3,"^::",3,"^:3",["^1F",[["^:2","^:="],["^:2","^:=","^=1"]]],"^:0",["^1F",[["^:2","^:="],["^:2","^:=","^=1"]]],"^:5",["^1F",[null,null]]]],"^D","^29","^6","datascript/query.cljc","^:",22,"^;M",["^ ","^:6",false,"^;N",3,"^::",3,"^:3",["^1F",[["^:2","^:="],["^:2","^:=","^=1"]]],"^:0",["^1F",[["^:2","^:="],["^:2","^:=","^=1"]]],"^:5",["^1F",[null,null]]],"^:3",["^1F",[["^:2","^:="],["^:2","^:=","^=1"]]],"^:4",null,"^;N",3,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^;O",[["^ ","^;N",2,"^:6",false,"^:H","^:9"],["^ ","^;N",3,"^:6",false,"^:H",["^C",[null,"^:8","^:9"]]]],"^7",730,"^9",730,"^::",3,"^:;",true,"^:0",["^1F",[["^:2","^:="],["^:2","^:=","^=1"]]]],"~$*lookup-attrs*",["^ ","^5",["^ ","^6","datascript/query.cljc","^7",345,"^8",3,"^9",345,"^:",17,"~:dynamic",true,"^;1","List of symbols in current pattern that might potentiall be resolved to refs"],"^D","^79","^6","datascript/query.cljc","^:",17,"^8",1,"^=3",true,"^7",343,"^9",345,"^:H","^:9","^;1","List of symbols in current pattern that might potentiall be resolved to refs"],"~$*implicit-source*",["^ ","^5",["^ ","^6","datascript/query.cljc","^7",349,"^8",3,"^9",349,"^:",20,"^=3",true,"^;1","Default pattern source. Lookup refs, patterns, rules will be resolved with it"],"^D","^2>","^6","datascript/query.cljc","^:",20,"^8",1,"^=3",true,"^7",347,"^9",349,"^:H","^:9","^;1","Default pattern source. Lookup refs, patterns, rules will be resolved with it"],"~$->Relation",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^:",20,"^8",12,"^:W",true,"^:X","^:Y","^7",35,"^9",35,"^:0",["^1F",["^:1",["^1F",[["^:K","^<["]]]]],"^;1","Positional factory function for datascript.query/Relation."],"^D","^2A","^6","datascript/query.cljc","^:",20,"^:3",["^1F",[["^:K","^<["]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:W",true,"^:6",false,"^:X","^:Y","^7",35,"^:7","^4V","^9",35,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:K","^<["]]]]],"^;1","Positional factory function for datascript.query/Relation."],"~$join-tuples",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",96,"^8",7,"^9",96,"^:",18,"^:0",["^1F",["^:1",["^1F",[["~$t1","~$idxs1","~$t2","~$idxs2"]]]]]],"^D","^3C","^6","datascript/query.cljc","^:",18,"^:3",["^1F",[["^=7","^=8","^=9","^=:"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",96,"^:7","~$array","^9",96,"^::",4,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^=7","^=8","^=9","^=:"]]]]]],"~$IPostProcess",["^ ","^5",["^ ","^<0",true,"^6","datascript/query.cljc","^:",26,"^8",14,"^7",893,"^<1",["^ ","^;O",["^ ","~$-post-process",[["~$find","^<["]]]],"^9",893,"^<3",["^ ","~:-post-process",["^ ","^D","^==","^:0",["^1F",[["^=>","^<["]]],"^;1",null]],"^<5",["^1F",["@interface"]]],"^<0",true,"^D","^24","^6","datascript/query.cljc","^:",26,"^8",1,"^7",893,"^<1",["^ ","^;O",["^ ","^==",[["^=>","^<["]]]],"^<6",null,"^9",893,"^:H","^:9","^<3",["^ ","^=?",["^ ","^D","^==","^:0",["^1F",[["^=>","^<["]]],"^;1",null]],"^<7",["^C",["^2X","^5W","^67","^6N"]],"^<5",["^1F",["@interface"]]],"~$looks-like?",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",60,"^8",8,"^9",60,"^:",19,"^:G",true,"^:0",["^1F",["^:1",["^1F",[["^:?","^;<"]]]]]],"^:G",true,"^D","^23","^6","datascript/query.cljc","^:",19,"^:3",["^1F",[["^:?","^;<"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",60,"^:7",["^C",["^:A","^:9"]],"^9",60,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:?","^;<"]]]]]],"~$dynamic-lookup-attrs",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",682,"^8",7,"^9",682,"^:",27,"^:0",["^1F",["^:1",["^1F",[["^;6","^:?"]]]]]],"^D","^36","^6","datascript/query.cljc","^:",27,"^:3",["^1F",[["^;6","^:?"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",682,"^:7","^:8","^9",682,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^;6","^:?"]]]]]],"~$lookup-ref?",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",91,"^8",7,"^9",91,"^:",18,"^:0",["^1F",["^:1",["^1F",[["^;<"]]]]]],"^D","^32","^6","datascript/query.cljc","^:",18,"^:3",["^1F",[["^;<"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",91,"^:7",["^C",["^:A","^:9"]],"^9",91,"^::",1,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^;<"]]]]]],"^<2",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",290,"^8",4,"^9",290,"^:",11,"~:protocol","^6Z","^;1",null,"^:0",["^1F",["^:1",["^1F",[["^:R","^;>"]]]]]],"^=C","^6Z","^D","^2G","^6","datascript/query.cljc","^:",11,"^:3",["^1F",[["^:R","^;>"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",289,"^:7","^:9","^9",290,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:R","^;>"]]]]],"^;1",null],"~$-get-some",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",173,"^8",8,"^9",173,"^:",17,"^:G",true,"^:0",["^1F",["^:1",["^1F",[["^W","~$e","~$&","~$as"]]]]],"^;M",["^ ","^:6",true,"^;N",2,"^::",2,"^:3",[["^1F",["^W","~$e","^=E"]]],"^:0",["^1F",[["^W","~$e","~$&","^=E"]]],"^:5",["^1F",[null]]]],"^:G",true,"^D","^27","^6","datascript/query.cljc","^:",17,"^;M",["^ ","^:6",true,"^;N",2,"^::",2,"^:3",[["^1F",["^W","~$e","^=E"]]],"^:0",["^1F",[["^W","~$e","~$&","^=E"]]],"^:5",["^1F",[null]]],"^:3",[["^1F",["^W","~$e","^=E"]]],"^:4",null,"^;N",2,"^:5",["^1F",[null]],"^8",1,"^:6",true,"^;O",[["^ ","^;N",2,"^:6",true,"^:H",["^C",[null,"^:9"]]]],"^7",173,"^:7","^:9","^9",173,"^::",2,"^:;",true,"^:0",["^1F",[["^W","~$e","~$&","^=E"]]]],"~$expand-rule",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",573,"^8",7,"^9",573,"^:",18,"^:0",["^1F",["^:1",["^1F",[["^:=","^:2","^<>"]]]]]],"^D","^22","^6","datascript/query.cljc","^:",18,"^:3",["^1F",[["^:=","^:2","^<>"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",573,"^:7","^:E","^9",573,"^::",3,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:=","^:2","^<>"]]]]]],"~$same-keys?",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",55,"^8",7,"^9",55,"^:",17,"^:0",["^1F",["^:1",["^1F",[["~$a","~$b"]]]]]],"^D","^37","^6","datascript/query.cljc","^:",17,"^:3",["^1F",[["~$a","~$b"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",55,"^:7","^:A","^9",55,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["~$a","~$b"]]]]]],"~$resolve-clause",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",811,"^8",7,"^9",811,"^:",21,"^:0",["^1F",["^:1",["^1F",[["^:2","^:="]]]]]],"^D","^4;","^6","datascript/query.cljc","^:",21,"^:3",["^1F",[["^:2","^:="]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",811,"^:7",["^C",[null,"^:8","^:9"]],"^9",811,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:2","^:="]]]]]],"~$limit-context",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",696,"^8",7,"^9",696,"^:",20,"^:0",["^1F",["^:1",["^1F",[["^:2","^:O"]]]]]],"^D","^2P","^6","datascript/query.cljc","^:",20,"^:3",["^1F",[["^:2","^:O"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",696,"^:7",["^C",["^:8","^:9"]],"^9",696,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:2","^:O"]]]]]],"~$hash-join",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",381,"^8",7,"^9",381,"^:",16,"^:0",["^1F",["^:1",["^1F",[["^<W","^<X"]]]]]],"^D","^2V","^6","datascript/query.cljc","^:",16,"^:3",["^1F",[["^<W","^<X"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",381,"^:7","^4V","^9",381,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^<W","^<X"]]]]]],"~$-call-fn",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",486,"^8",7,"^9",486,"^:",15,"^:0",["^1F",["^:1",["^1F",[["^:2","^:N","~$f","^;L"]]]]]],"^D","^2W","^6","datascript/query.cljc","^:",15,"^:3",["^1F",[["^:2","^:N","~$f","^;L"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",486,"^:7","^;4","^9",486,"^::",4,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:2","^:N","~$f","^;L"]]]]]],"~$parse-rules",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",280,"^8",7,"^9",280,"^:",18,"^:0",["^1F",["^:1",["^1F",[["^;0"]]]]]],"^D","^2O","^6","datascript/query.cljc","^:",18,"^:3",["^1F",[["^;0"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",280,"^:7","^:8","^9",280,"^::",1,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^;0"]]]]]],"~$memoized-parse-query",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",923,"^8",7,"^9",923,"^:",27,"^:0",["^1F",["^:1",["^1F",[["~$q"]]]]]],"^D","^44","^6","datascript/query.cljc","^:",27,"^:3",["^1F",[["~$q"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",923,"^:7",["^C",[null,"^:9","~$datascript.parser/Query"]],"^9",923,"^::",1,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["~$q"]]]]]],"~$built-in-aggregates",["^ ","^D","^33","^6","datascript/query.cljc","^7",211,"^8",1,"^9",211,"^:",25,"^5",["^ ","^6","datascript/query.cljc","^7",211,"^8",6,"^9",211,"^:",25]],"~$Context",["^ ","~:num-fields",3,"~:protocols",["^C",["~$cljs.core/IRecord","~$cljs.core/IKVReduce","~$cljs.core/IEquiv","~$cljs.core/IHash","~$cljs.core/ICollection","~$cljs.core/ICounted","~$cljs.core/ISeqable","~$cljs.core/IMeta","~$cljs.core/ICloneable","~$cljs.core/IPrintWithWriter","~$cljs.core/IIterable","~$cljs.core/IWithMeta","~$cljs.core/IAssociative","^:T","~$cljs.core/ILookup"]],"^D","^3F","^6","datascript/query.cljc","^:",19,"~:type",true,"^8",12,"^:W",true,"^7",28,"~:record",true,"^9",28,"^:H","^;4","~:skip-protocol-flag",["^C",["^=S","^=T","^=U","^=V","^=W","^=X","^=Y","^=Z","^=[","^>0","^>1","^>2","^>3","^:T","^>4"]]],"~$sum-rel",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",109,"^8",7,"^9",109,"^:",14,"^:0",["^1F",["^:1",["^1F",[["~$a","~$b"]]]]]],"^D","^3@","^6","datascript/query.cljc","^:",14,"^:3",["^1F",[["~$a","~$b"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",109,"^:7",["^C",["^:9","^4V"]],"^9",109,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["~$a","~$b"]]]]]],"~$rel-with-attr",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",470,"^8",8,"^9",470,"^:",21,"^:G",true,"^:0",["^1F",["^:1",["^1F",[["^:2","^;B"]]]]]],"^:G",true,"^D","^3;","^6","datascript/query.cljc","^:",21,"^:3",["^1F",[["^:2","^;B"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",470,"^:7",["^C",["^:9","^:P"]],"^9",470,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:2","^;B"]]]]]],"~$free-var?",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",84,"^8",7,"^9",84,"^:",16,"^:0",["^1F",["^:1",["^1F",[["^;B"]]]]]],"^D","^2N","^6","datascript/query.cljc","^:",16,"^:3",["^1F",[["^;B"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",84,"^:7","^:A","^9",84,"^::",1,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^;B"]]]]]],"~$map->Context",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^:",19,"^8",12,"^:W",true,"^:X","~:map","^7",28,"^9",28,"^:0",["^1F",["^:1",["^1F",[["~$G__25100"]]]]],"^;1","Factory function for datascript.query/Context, taking a map of keywords to field values."],"^D","^3[","^6","datascript/query.cljc","^:",19,"^:3",["^1F",[["^>="]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:W",true,"^:6",false,"^:X","^><","^7",28,"^:7","^3F","^9",28,"^::",1,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^>="]]]]],"^;1","Factory function for datascript.query/Context, taking a map of keywords to field values."],"^<9",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",852,"^8",4,"^9",852,"^:",20,"^=C","^70","^;1",null,"^:0",["^1F",["^:1",["^1F",[["^<:","^:2"]]]]]],"^=C","^70","^D","^4:","^6","datascript/query.cljc","^:",20,"^:3",["^1F",[["^<:","^:2"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",851,"^:7","^:9","^9",852,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^<:","^:2"]]]]],"^;1",null],"~$Relation",["^ ","^=Q",2,"^=R",["^C",["^=S","^=T","^=U","^=V","^=W","^=X","^=Y","^=Z","^=[","^>0","^>1","^>2","^>3","^:T","^>4"]],"^D","^4V","^6","datascript/query.cljc","^:",20,"^>5",true,"^8",12,"^:W",true,"^7",35,"^>6",true,"^9",35,"^:H","^;4","^>7",["^C",["^=S","^=T","^=U","^=V","^=W","^=X","^=Y","^=Z","^=[","^>0","^>1","^>2","^>3","^:T","^>4"]]],"~$filter-by-pred",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",524,"^8",7,"^9",524,"^:",21,"^:0",["^1F",["^:1",["^1F",[["^:2","^:="]]]]]],"^D","^3W","^6","datascript/query.cljc","^:",21,"^:3",["^1F",[["^:2","^:="]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",524,"^:7",["^C",["^:8","^:9"]],"^9",524,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:2","^:="]]]]]],"~$split-guards",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",609,"^8",7,"^9",609,"^:",19,"^:0",["^1F",["^:1",["^1F",[["^;D","~$guards"]]]]]],"^D","^3L","^6","datascript/query.cljc","^:",19,"^:3",["^1F",[["^;D","^>A"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",609,"^:7","^:L","^9",609,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^;D","^>A"]]]]]],"~$check-free-subset",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",720,"^8",7,"^9",720,"^:",24,"^:0",["^1F",["^:1",["^1F",[["^;:","^:O","^;;"]]]]]],"^D","^3K","^6","datascript/query.cljc","^:",24,"^:3",["^1F",[["^;:","^:O","^;;"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",720,"^:7","^:P","^9",720,"^::",3,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^;:","^:O","^;;"]]]]]],"~$normalize-pattern-clause",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",448,"^8",7,"^9",448,"^:",31,"^:0",["^1F",["^:1",["^1F",[["^:="]]]]]],"^D","^3Y","^6","datascript/query.cljc","^:",31,"^:3",["^1F",[["^:="]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",448,"^:7",["^C",[null,"^:E"]],"^9",448,"^::",1,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:="]]]]]],"~$collect",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",846,"^8",7,"^9",846,"^:",14,"^:0",["^1F",["^:1",["^1F",[["^:2","^;S"]]]]]],"^D","^49","^6","datascript/query.cljc","^:",14,"^:3",["^1F",[["^:2","^;S"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",846,"^:7",["^C",["^:8","^:9","^<T","^<U","^:P"]],"^9",846,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:2","^;S"]]]]]],"~$zip",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",51,"^8",7,"^9",51,"^:",10,"^:0",["^1F",["^:1",["^1F",[["~$a","~$b"],["~$a","~$b","~$&","~$rest"]]]]],"^;M",["^ ","^:6",true,"^;N",2,"^::",2,"^:3",["^1F",[["~$a","~$b"]]],"^:0",["^1F",[["~$a","~$b"],["~$a","~$b","~$&","^>F"]]],"^:5",["^1F",[null,null]]]],"^D","^45","^6","datascript/query.cljc","^:",10,"^;M",["^ ","^:6",true,"^;N",2,"^::",2,"^:3",["^1F",[["~$a","~$b"]]],"^:0",["^1F",[["~$a","~$b"],["~$a","~$b","~$&","^>F"]]],"^:5",["^1F",[null,null]]],"^:3",["^1F",[["~$a","~$b"]]],"^:4",null,"^;N",2,"^:5",["^1F",[null,null]],"^8",1,"^:6",true,"^;O",[["^ ","^;N",2,"^:6",false,"^:H",["^C",[null,"^:8","^:9"]]],["^ ","^;N",2,"^:6",true,"^:H","^:9"]],"^7",51,"^9",51,"^::",2,"^:;",true,"^:0",["^1F",[["~$a","~$b"],["~$a","~$b","~$&","^>F"]]]],"~$map->Relation",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^:",20,"^8",12,"^:W",true,"^:X","^><","^7",35,"^9",35,"^:0",["^1F",["^:1",["^1F",[["~$G__25116"]]]]],"^;1","Factory function for datascript.query/Relation, taking a map of keywords to field values."],"^D","^41","^6","datascript/query.cljc","^:",20,"^:3",["^1F",[["^>H"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:W",true,"^:6",false,"^:X","^><","^7",35,"^:7","^4V","^9",35,"^::",1,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^>H"]]]]],"^;1","Factory function for datascript.query/Relation, taking a map of keywords to field values."],"~$-differ?",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",161,"^8",8,"^9",161,"^:",16,"^:G",true,"^:0",["^1F",["^:1",["^1F",[["~$&","^<D"]]]]],"^;M",["^ ","^:6",true,"^;N",0,"^::",0,"^:3",[["^1F",["^<D"]]],"^:0",["^1F",[["~$&","^<D"]]],"^:5",["^1F",[null]]]],"^:G",true,"^D","^4S","^6","datascript/query.cljc","^:",16,"^;M",["^ ","^:6",true,"^;N",0,"^::",0,"^:3",[["^1F",["^<D"]]],"^:0",["^1F",[["~$&","^<D"]]],"^:5",["^1F",[null]]],"^:3",[["^1F",["^<D"]]],"^:4",null,"^;N",0,"^:5",["^1F",[null]],"^8",1,"^:6",true,"^;O",[["^ ","^;N",0,"^:6",true,"^:H","^:A"]],"^7",161,"^:7","^:9","^9",161,"^::",0,"^:;",true,"^:0",["^1F",[["~$&","^<D"]]]],"~$hash-attrs",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",372,"^8",7,"^9",372,"^:",17,"^:0",["^1F",["^:1",["^1F",[["~$key-fn","^<["]]]]]],"^D","^5?","^6","datascript/query.cljc","^:",17,"^:3",["^1F",[["^>K","^<["]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",372,"^:7","^:8","^9",372,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^>K","^<["]]]]]],"~$check-bound",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",704,"^8",7,"^9",704,"^:",18,"^:0",["^1F",["^:1",["^1F",[["^;:","^:O","^;<"]]]]]],"^D","^5@","^6","datascript/query.cljc","^:",18,"^:3",["^1F",[["^;:","^:O","^;<"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",704,"^:7","^:P","^9",704,"^::",3,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^;:","^:O","^;<"]]]]]],"~$lookup-pattern-db",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",421,"^8",7,"^9",421,"^:",24,"^:0",["^1F",["^:1",["^1F",[["^W","^:?"]]]]]],"^D","^4?","^6","datascript/query.cljc","^:",24,"^:3",["^1F",[["^W","^:?"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",421,"^:7","^4V","^9",421,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^W","^:?"]]]]]],"^==",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",894,"^8",4,"^9",894,"^:",17,"^=C","^24","^;1",null,"^:0",["^1F",["^:1",["^1F",[["^=>","^<["]]]]]],"^=C","^24","^D","^4@","^6","datascript/query.cljc","^:",17,"^:3",["^1F",[["^=>","^<["]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",893,"^:7","^:9","^9",894,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^=>","^<["]]]]],"^;1",null],"~$and-fn",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",186,"^8",8,"^9",186,"^:",14,"^:G",true,"^:0",["^1F",["^:1",["^1F",[["~$&","^;L"]]]]],"^;M",["^ ","^:6",true,"^;N",0,"^::",0,"^:3",[["^1F",["^;L"]]],"^:0",["^1F",[["~$&","^;L"]]],"^:5",["^1F",[null]]]],"^:G",true,"^D","^4F","^6","datascript/query.cljc","^:",14,"^;M",["^ ","^:6",true,"^;N",0,"^::",0,"^:3",[["^1F",["^;L"]]],"^:0",["^1F",[["~$&","^;L"]]],"^:5",["^1F",[null]]],"^:3",[["^1F",["^;L"]]],"^:4",null,"^;N",0,"^:5",["^1F",[null]],"^8",1,"^:6",true,"^;O",[["^ ","^;N",0,"^:6",true,"^:H",["^C",[null,"^:9"]]]],"^7",186,"^:7","^:9","^9",186,"^::",0,"^:;",true,"^:0",["^1F",[["~$&","^;L"]]]],"~$collapse-rels",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",460,"^8",7,"^9",460,"^:",20,"^:0",["^1F",["^:1",["^1F",[["^:Z","~$new-rel"]]]]]],"^D","^4G","^6","datascript/query.cljc","^:",20,"^:3",["^1F",[["^:Z","^>P"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",460,"^:7","^:8","^9",460,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:Z","^>P"]]]]]],"~$idxs-of",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",881,"^8",8,"^9",881,"^:",15,"^:G",true,"^:0",["^1F",["^:1",["^1F",[["^;X","^;Z"]]]]]],"^:G",true,"^D","^4J","^6","datascript/query.cljc","^:",15,"^:3",["^1F",[["^;X","^;Z"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",881,"^:7","^:E","^9",881,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^;X","^;Z"]]]]]],"~$getter-fn",["^ ","^9[",null,"^5",["^ ","^6","datascript/query.cljc","^7",351,"^8",7,"^9",351,"^:",16,"^:0",["^1F",["^:1",["^1F",[["^:K","~$attr"]]]]]],"^D","^4C","^6","datascript/query.cljc","^:",16,"^:3",["^1F",[["^:K","^>S"]]],"^:4",null,"^:5",["^1F",[null,null]],"^8",1,"^:6",false,"^7",351,"^:7","^;4","^9",351,"^::",2,"^:;",true,"^:0",["^1F",["^:1",["^1F",[["^:K","^>S"]]]]]]],"^1D",["^ ","^J","^K","^R","^R","^V","^V","^W","^A","^A","^A","^K","^K","^11","^V","^12","^12","^13","^12"],"~:cljs.analyzer/constants",["^ ","^14",["^C",["~:used-args","~:args","~$contains?","~$subs","^L","~$get-else","~$println-str","~:tuples","^2F","~$namespace","~$=","~$rand-int","~$dec","~:where","~:v","~:fn","~$<","^2R","~:variable","~$re-seq","~$some?","~$range","~$sum","~:else","~$pos?","~$neg?","^<[","~:bindings","~:symbol","~:sources","~$<=","~:query/binding","~$*","~$re-pattern","~$min","~$prn-str","~:value","~:prefix-context","~$get-some","~$identity","~$meta","^48","~$empty?","~$quot","^4=","~$stddev","~:qfind","~$not=","~$or-join","~$ground","~$rand","~$>","^1S","~$even?","~$_","~:rules","~$pr-str","^:[","~$mod","~:qin","~:qwith","~$-","~$or","~$name","~:rels","~$zero?","~:binding","~$rem","~$nil?","~$variance","~:var","~$re-find","~$not","~$type","~$identical?","~$$","~:with","~:pending-guards","~$not-join","~$true?","^;0","~$/","~$vector","~$>=","~$not-empty","~$distinct","~:attrs","~$sample","~:error","~$re-matches","~$array-map","^:Z","~:clauses","~$odd?","^1E","~$inc","~$list","~$+","~$missing?","~$median","^Y","~$hash-map","~$false?","~$max","~:query/where","~$!=","~$==","~$count","~:prefix-clauses","^>I","~$compare","~$complement","~$count-distinct","~$and","~:a","~$print-str","^:K","~$avg","~:vars","~:pattern"]],"~:order",["^?Z","^??","^?S","^:Z","^:[","^;0","^@A","^>[","^:K","^<[","~$_","~$*","^?:","^@C","^@O","~:v","~:a","^@<","^@W","^@G","^>Y","^@>","^@X","~$>","^@R","^?G","^@2","^@H","~$/","^?K","^@M","^@6","^?H","^>I","^?6","^?@","^2F","~$=","^?C","~$+","^?Y","^@J","^?P","^?1","^@U","^@Q","^@L","^@T","^?8","^@N","^?J","^?T","^>Z","^?I","^?[","^@P","^?D","^?2","^?B","^@=","^?N","^Y","~$<","^?0","~$-","^?7","^?;","^?Q","^@D","^@I","^>W","^48","^>X","^?U","^4=","^@E","^@1","^?R","^@7","^?<","^2R","^@?","^?X","^@8","^L","^@5","^@3","^@K","^?9","^@V","^@@","^@Y","^?L","^@B","^?>","^?5","^?E","^@0","^?A","^?=","~$$","^1E","^@4","^@S","^?F","^@F","^>U","^@:","^@Z","^?O","^@;","^?4","^>V","^1S","^@[","^?M","^?W","^?3","^?V","^@9"]],"^1K",["^ ","^15",["^C",[]]],"^1L",["^ "],"^1M",["^S","^R","^12","^M","^Z","^U","^A","^K","^X","^10","^V","^Q","^O"]],"^G","^E","~:ns-specs",["^ "],"~:ns-spec-vars",["^C",[]],"~:compiler-options",["^7V",[["^A3","~:static-fns"],true,["^A3","~:shadow-tweaks"],null,["^A3","~:source-map-inline"],null,["^A3","~:elide-asserts"],true,["^A3","~:optimize-constants"],null,["^A3","^1R"],null,["^A3","~:external-config"],null,["^A3","~:tooling-config"],null,["^A3","~:emit-constants"],null,["^A3","~:load-tests"],false,["^A3","~:form-size-threshold"],null,["^A3","~:infer-externs"],true,["^A3","^1T"],null,["~:js-options","~:js-provider"],"^15",["~:mode"],"~:release",["^A3","~:fn-invoke-direct"],null,["^A3","~:source-map"],null]]]