macrovich
Version:
A set of three macros to ease writing `*.cljc` supporting Clojure, Clojurescript and self-hosted Clojurescript.
1,270 lines (1,179 loc) • 224 kB
JavaScript
// Compiled by ClojureScript 1.9.293 {:target :nodejs}
goog.provide('cljs.spec');
goog.require('cljs.core');
goog.require('cljs.core');
goog.require('goog.object');
goog.require('clojure.walk');
goog.require('cljs.spec.impl.gen');
goog.require('clojure.string');
cljs.spec.MAX_INT = (9007199254740991);
/**
* A soft limit on how many times a branching spec (or/alt/* /opt-keys/multi-spec)
* can be recursed through during generation. After this a
* non-recursive branch will be chosen.
*/
cljs.spec._STAR_recursion_limit_STAR_ = (4);
/**
* The number of times an anonymous fn specified by fspec will be (generatively) tested during conform
*/
cljs.spec._STAR_fspec_iterations_STAR_ = (21);
/**
* The number of items validated in a collection spec'ed with 'every'
*/
cljs.spec._STAR_coll_check_limit_STAR_ = (101);
/**
* The number of errors reported by explain in a collection spec'ed with 'every'
*/
cljs.spec._STAR_coll_error_limit_STAR_ = (20);
/**
* @interface
*/
cljs.spec.Spec = function(){};
cljs.spec.conform_STAR_ = (function cljs$spec$conform_STAR_(spec,x){
if((!((spec == null))) && (!((spec.cljs$spec$Spec$conform_STAR_$arity$2 == null)))){
return spec.cljs$spec$Spec$conform_STAR_$arity$2(spec,x);
} else {
var x__7554__auto__ = (((spec == null))?null:spec);
var m__7555__auto__ = (cljs.spec.conform_STAR_[goog.typeOf(x__7554__auto__)]);
if(!((m__7555__auto__ == null))){
return m__7555__auto__.call(null,spec,x);
} else {
var m__7555__auto____$1 = (cljs.spec.conform_STAR_["_"]);
if(!((m__7555__auto____$1 == null))){
return m__7555__auto____$1.call(null,spec,x);
} else {
throw cljs.core.missing_protocol.call(null,"Spec.conform*",spec);
}
}
}
});
cljs.spec.unform_STAR_ = (function cljs$spec$unform_STAR_(spec,y){
if((!((spec == null))) && (!((spec.cljs$spec$Spec$unform_STAR_$arity$2 == null)))){
return spec.cljs$spec$Spec$unform_STAR_$arity$2(spec,y);
} else {
var x__7554__auto__ = (((spec == null))?null:spec);
var m__7555__auto__ = (cljs.spec.unform_STAR_[goog.typeOf(x__7554__auto__)]);
if(!((m__7555__auto__ == null))){
return m__7555__auto__.call(null,spec,y);
} else {
var m__7555__auto____$1 = (cljs.spec.unform_STAR_["_"]);
if(!((m__7555__auto____$1 == null))){
return m__7555__auto____$1.call(null,spec,y);
} else {
throw cljs.core.missing_protocol.call(null,"Spec.unform*",spec);
}
}
}
});
cljs.spec.explain_STAR_ = (function cljs$spec$explain_STAR_(spec,path,via,in$,x){
if((!((spec == null))) && (!((spec.cljs$spec$Spec$explain_STAR_$arity$5 == null)))){
return spec.cljs$spec$Spec$explain_STAR_$arity$5(spec,path,via,in$,x);
} else {
var x__7554__auto__ = (((spec == null))?null:spec);
var m__7555__auto__ = (cljs.spec.explain_STAR_[goog.typeOf(x__7554__auto__)]);
if(!((m__7555__auto__ == null))){
return m__7555__auto__.call(null,spec,path,via,in$,x);
} else {
var m__7555__auto____$1 = (cljs.spec.explain_STAR_["_"]);
if(!((m__7555__auto____$1 == null))){
return m__7555__auto____$1.call(null,spec,path,via,in$,x);
} else {
throw cljs.core.missing_protocol.call(null,"Spec.explain*",spec);
}
}
}
});
cljs.spec.gen_STAR_ = (function cljs$spec$gen_STAR_(spec,overrides,path,rmap){
if((!((spec == null))) && (!((spec.cljs$spec$Spec$gen_STAR_$arity$4 == null)))){
return spec.cljs$spec$Spec$gen_STAR_$arity$4(spec,overrides,path,rmap);
} else {
var x__7554__auto__ = (((spec == null))?null:spec);
var m__7555__auto__ = (cljs.spec.gen_STAR_[goog.typeOf(x__7554__auto__)]);
if(!((m__7555__auto__ == null))){
return m__7555__auto__.call(null,spec,overrides,path,rmap);
} else {
var m__7555__auto____$1 = (cljs.spec.gen_STAR_["_"]);
if(!((m__7555__auto____$1 == null))){
return m__7555__auto____$1.call(null,spec,overrides,path,rmap);
} else {
throw cljs.core.missing_protocol.call(null,"Spec.gen*",spec);
}
}
}
});
cljs.spec.with_gen_STAR_ = (function cljs$spec$with_gen_STAR_(spec,gfn){
if((!((spec == null))) && (!((spec.cljs$spec$Spec$with_gen_STAR_$arity$2 == null)))){
return spec.cljs$spec$Spec$with_gen_STAR_$arity$2(spec,gfn);
} else {
var x__7554__auto__ = (((spec == null))?null:spec);
var m__7555__auto__ = (cljs.spec.with_gen_STAR_[goog.typeOf(x__7554__auto__)]);
if(!((m__7555__auto__ == null))){
return m__7555__auto__.call(null,spec,gfn);
} else {
var m__7555__auto____$1 = (cljs.spec.with_gen_STAR_["_"]);
if(!((m__7555__auto____$1 == null))){
return m__7555__auto____$1.call(null,spec,gfn);
} else {
throw cljs.core.missing_protocol.call(null,"Spec.with-gen*",spec);
}
}
}
});
cljs.spec.describe_STAR_ = (function cljs$spec$describe_STAR_(spec){
if((!((spec == null))) && (!((spec.cljs$spec$Spec$describe_STAR_$arity$1 == null)))){
return spec.cljs$spec$Spec$describe_STAR_$arity$1(spec);
} else {
var x__7554__auto__ = (((spec == null))?null:spec);
var m__7555__auto__ = (cljs.spec.describe_STAR_[goog.typeOf(x__7554__auto__)]);
if(!((m__7555__auto__ == null))){
return m__7555__auto__.call(null,spec);
} else {
var m__7555__auto____$1 = (cljs.spec.describe_STAR_["_"]);
if(!((m__7555__auto____$1 == null))){
return m__7555__auto____$1.call(null,spec);
} else {
throw cljs.core.missing_protocol.call(null,"Spec.describe*",spec);
}
}
}
});
if(typeof cljs.spec.registry_ref !== 'undefined'){
} else {
cljs.spec.registry_ref = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY);
}
cljs.spec.named_QMARK_ = (function cljs$spec$named_QMARK_(x){
if(!((x == null))){
if(((x.cljs$lang$protocol_mask$partition1$ & (4096))) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$core$INamed$))){
return true;
} else {
return false;
}
} else {
return false;
}
});
cljs.spec.with_name = (function cljs$spec$with_name(spec,name){
return cljs.core.with_meta.call(null,spec,cljs.core.assoc.call(null,cljs.core.meta.call(null,spec),new cljs.core.Keyword("cljs.spec","name","cljs.spec/name",-1902005006),name));
});
cljs.spec.spec_name = (function cljs$spec$spec_name(spec){
if((spec instanceof cljs.core.Keyword)){
return spec;
} else {
if(((!((spec == null)))?((((spec.cljs$lang$protocol_mask$partition0$ & (131072))) || ((cljs.core.PROTOCOL_SENTINEL === spec.cljs$core$IMeta$)))?true:false):false)){
return new cljs.core.Keyword("cljs.spec","name","cljs.spec/name",-1902005006).cljs$core$IFn$_invoke$arity$1(cljs.core.meta.call(null,spec));
} else {
return null;
}
}
});
/**
* returns the spec/regex at end of alias chain starting with k, nil if not found, k if k not Named
*/
cljs.spec.reg_resolve = (function cljs$spec$reg_resolve(k){
if(cljs.core.truth_(cljs.spec.named_QMARK_.call(null,k))){
var reg = cljs.core.deref.call(null,cljs.spec.registry_ref);
var spec = k;
while(true){
if(cljs.core.truth_(cljs.spec.named_QMARK_.call(null,spec))){
var G__11926 = cljs.core.get.call(null,reg,spec);
spec = G__11926;
continue;
} else {
if(cljs.core.truth_(spec)){
return cljs.spec.with_name.call(null,spec,k);
} else {
return null;
}
}
break;
}
} else {
return k;
}
});
/**
* returns the spec/regex at end of alias chain starting with k, throws if not found, k if k not ident
*/
cljs.spec.reg_resolve_BANG_ = (function cljs$spec$reg_resolve_BANG_(k){
if(cljs.core.ident_QMARK_.call(null,k)){
var or__6891__auto__ = cljs.spec.reg_resolve.call(null,k);
if(cljs.core.truth_(or__6891__auto__)){
return or__6891__auto__;
} else {
throw (new Error([cljs.core.str("Unable to resolve spec: "),cljs.core.str(k)].join('')));
}
} else {
return k;
}
});
/**
* returns x if x is a spec object, else logical false
*/
cljs.spec.spec_QMARK_ = (function cljs$spec$spec_QMARK_(x){
var and__6879__auto__ = ((!((x == null)))?(((false) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$spec$Spec$)))?true:false):false);
if(and__6879__auto__){
return x;
} else {
return and__6879__auto__;
}
});
/**
* returns x if x is a (clojure.spec) regex op, else logical false
*/
cljs.spec.regex_QMARK_ = (function cljs$spec$regex_QMARK_(x){
var and__6879__auto__ = new cljs.core.Keyword("cljs.spec","op","cljs.spec/op",939378204).cljs$core$IFn$_invoke$arity$1(x);
if(cljs.core.truth_(and__6879__auto__)){
return x;
} else {
return and__6879__auto__;
}
});
/**
* spec-or-k must be a spec, regex or resolvable kw/sym, else returns nil.
*/
cljs.spec.maybe_spec = (function cljs$spec$maybe_spec(spec_or_k){
var s = (function (){var or__6891__auto__ = cljs.spec.spec_QMARK_.call(null,spec_or_k);
if(cljs.core.truth_(or__6891__auto__)){
return or__6891__auto__;
} else {
var or__6891__auto____$1 = cljs.spec.regex_QMARK_.call(null,spec_or_k);
if(cljs.core.truth_(or__6891__auto____$1)){
return or__6891__auto____$1;
} else {
var or__6891__auto____$2 = (function (){var and__6879__auto__ = cljs.spec.named_QMARK_.call(null,spec_or_k);
if(cljs.core.truth_(and__6879__auto__)){
return cljs.spec.reg_resolve.call(null,spec_or_k);
} else {
return and__6879__auto__;
}
})();
if(cljs.core.truth_(or__6891__auto____$2)){
return or__6891__auto____$2;
} else {
return null;
}
}
}
})();
if(cljs.core.truth_(cljs.spec.regex_QMARK_.call(null,s))){
return cljs.spec.with_name.call(null,cljs.spec.regex_spec_impl.call(null,s,null),cljs.spec.spec_name.call(null,s));
} else {
return s;
}
});
/**
* spec-or-k must be a spec, regex or kw/sym, else returns nil. Throws if unresolvable kw/sym
*/
cljs.spec.the_spec = (function cljs$spec$the_spec(spec_or_k){
var or__6891__auto__ = cljs.spec.maybe_spec.call(null,spec_or_k);
if(cljs.core.truth_(or__6891__auto__)){
return or__6891__auto__;
} else {
if(cljs.core.truth_(cljs.spec.named_QMARK_.call(null,spec_or_k))){
throw (new Error([cljs.core.str("Unable to resolve spec: "),cljs.core.str(spec_or_k)].join('')));
} else {
return null;
}
}
});
cljs.spec.specize = (function cljs$spec$specize(s){
var or__6891__auto__ = cljs.spec.the_spec.call(null,s);
if(cljs.core.truth_(or__6891__auto__)){
return or__6891__auto__;
} else {
return cljs.spec.spec_impl.call(null,new cljs.core.Keyword("cljs.spec","unknown","cljs.spec/unknown",-1620309582),s,null,null);
}
});
/**
* Given a spec and a value, returns :clojure.spec/invalid if value does not match spec,
* else the (possibly destructured) value.
*/
cljs.spec.conform = (function cljs$spec$conform(spec,x){
return cljs.spec.conform_STAR_.call(null,cljs.spec.specize.call(null,spec),x);
});
/**
* Given a spec and a value created by or compliant with a call to
* 'conform' with the same spec, returns a value with all conform
* destructuring undone.
*/
cljs.spec.unform = (function cljs$spec$unform(spec,x){
return cljs.spec.unform_STAR_.call(null,cljs.spec.specize.call(null,spec),x);
});
/**
* returns the spec as data
*/
cljs.spec.form = (function cljs$spec$form(spec){
return cljs.spec.describe_STAR_.call(null,cljs.spec.specize.call(null,spec));
});
cljs.spec.abbrev = (function cljs$spec$abbrev(form){
if(cljs.core.seq_QMARK_.call(null,form)){
return clojure.walk.postwalk.call(null,(function (form__$1){
if(cljs.core.truth_((function (){var and__6879__auto__ = (form__$1 instanceof cljs.core.Symbol);
if(and__6879__auto__){
return cljs.core.namespace.call(null,form__$1);
} else {
return and__6879__auto__;
}
})())){
return cljs.core.symbol.call(null,cljs.core.name.call(null,form__$1));
} else {
if((cljs.core.seq_QMARK_.call(null,form__$1)) && (cljs.core._EQ_.call(null,new cljs.core.Symbol(null,"fn","fn",465265323,null),cljs.core.first.call(null,form__$1))) && (cljs.core._EQ_.call(null,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"%","%",-950237169,null)], null),cljs.core.second.call(null,form__$1)))){
return cljs.core.last.call(null,form__$1);
} else {
return form__$1;
}
}
}),form);
} else {
if(cljs.core.truth_((function (){var and__6879__auto__ = (form instanceof cljs.core.Symbol);
if(and__6879__auto__){
return cljs.core.namespace.call(null,form);
} else {
return and__6879__auto__;
}
})())){
return cljs.core.symbol.call(null,cljs.core.name.call(null,form));
} else {
return form;
}
}
});
/**
* returns an abbreviated description of the spec as data
*/
cljs.spec.describe = (function cljs$spec$describe(spec){
return cljs.spec.abbrev.call(null,cljs.spec.form.call(null,spec));
});
/**
* Takes a spec and a no-arg, generator-returning fn and returns a version of that spec that uses that generator
*/
cljs.spec.with_gen = (function cljs$spec$with_gen(spec,gen_fn){
var spec__$1 = cljs.spec.reg_resolve.call(null,spec);
if(cljs.core.truth_(cljs.spec.regex_QMARK_.call(null,spec__$1))){
return cljs.core.assoc.call(null,spec__$1,new cljs.core.Keyword("cljs.spec","gfn","cljs.spec/gfn",-432034727),gen_fn);
} else {
return cljs.spec.with_gen_STAR_.call(null,cljs.spec.specize.call(null,spec__$1),gen_fn);
}
});
cljs.spec.explain_data_STAR_ = (function cljs$spec$explain_data_STAR_(spec,path,via,in$,x){
var temp__4657__auto__ = cljs.spec.explain_STAR_.call(null,cljs.spec.specize.call(null,spec),path,via,in$,x);
if(cljs.core.truth_(temp__4657__auto__)){
var probs = temp__4657__auto__;
if(cljs.core.empty_QMARK_.call(null,probs)){
return null;
} else {
return new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("cljs.spec","problems","cljs.spec/problems",608491678),probs], null);
}
} else {
return null;
}
});
/**
* Given a spec and a value x which ought to conform, returns nil if x
* conforms, else a map with at least the key ::problems whose value is
* a collection of problem-maps, where problem-map has at least :path :pred and :val
* keys describing the predicate and the value that failed at that
* path.
*/
cljs.spec.explain_data = (function cljs$spec$explain_data(spec,x){
return cljs.spec.explain_data_STAR_.call(null,spec,cljs.core.PersistentVector.EMPTY,(function (){var temp__4655__auto__ = cljs.spec.spec_name.call(null,spec);
if(cljs.core.truth_(temp__4655__auto__)){
var name = temp__4655__auto__;
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [name], null);
} else {
return cljs.core.PersistentVector.EMPTY;
}
})(),cljs.core.PersistentVector.EMPTY,x);
});
/**
* Default printer for explain-data. nil indicates a successful validation.
*/
cljs.spec.explain_printer = (function cljs$spec$explain_printer(ed){
if(cljs.core.truth_(ed)){
return cljs.core.print.call(null,(function (){var sb__7880__auto__ = (new goog.string.StringBuffer());
var _STAR_print_newline_STAR_11971_12011 = cljs.core._STAR_print_newline_STAR_;
var _STAR_print_fn_STAR_11972_12012 = cljs.core._STAR_print_fn_STAR_;
cljs.core._STAR_print_newline_STAR_ = true;
cljs.core._STAR_print_fn_STAR_ = ((function (_STAR_print_newline_STAR_11971_12011,_STAR_print_fn_STAR_11972_12012,sb__7880__auto__){
return (function (x__7881__auto__){
return sb__7880__auto__.append(x__7881__auto__);
});})(_STAR_print_newline_STAR_11971_12011,_STAR_print_fn_STAR_11972_12012,sb__7880__auto__))
;
try{var seq__11973_12013 = cljs.core.seq.call(null,new cljs.core.Keyword("cljs.spec","problems","cljs.spec/problems",608491678).cljs$core$IFn$_invoke$arity$1(ed));
var chunk__11974_12014 = null;
var count__11975_12015 = (0);
var i__11976_12016 = (0);
while(true){
if((i__11976_12016 < count__11975_12015)){
var map__11977_12017 = cljs.core._nth.call(null,chunk__11974_12014,i__11976_12016);
var map__11977_12018__$1 = ((((!((map__11977_12017 == null)))?((((map__11977_12017.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__11977_12017.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__11977_12017):map__11977_12017);
var prob_12019 = map__11977_12018__$1;
var path_12020 = cljs.core.get.call(null,map__11977_12018__$1,new cljs.core.Keyword(null,"path","path",-188191168));
var pred_12021 = cljs.core.get.call(null,map__11977_12018__$1,new cljs.core.Keyword(null,"pred","pred",1927423397));
var val_12022 = cljs.core.get.call(null,map__11977_12018__$1,new cljs.core.Keyword(null,"val","val",128701612));
var reason_12023 = cljs.core.get.call(null,map__11977_12018__$1,new cljs.core.Keyword(null,"reason","reason",-2070751759));
var via_12024 = cljs.core.get.call(null,map__11977_12018__$1,new cljs.core.Keyword(null,"via","via",-1904457336));
var in_12025 = cljs.core.get.call(null,map__11977_12018__$1,new cljs.core.Keyword(null,"in","in",-1531184865));
if(cljs.core.empty_QMARK_.call(null,in_12025)){
} else {
cljs.core.print.call(null,"In:",cljs.core.pr_str.call(null,in_12025),"");
}
cljs.core.print.call(null,"val: ");
cljs.core.pr.call(null,val_12022);
cljs.core.print.call(null," fails");
if(cljs.core.empty_QMARK_.call(null,via_12024)){
} else {
cljs.core.print.call(null," spec:",cljs.core.pr_str.call(null,cljs.core.last.call(null,via_12024)));
}
if(cljs.core.empty_QMARK_.call(null,path_12020)){
} else {
cljs.core.print.call(null," at:",cljs.core.pr_str.call(null,path_12020));
}
cljs.core.print.call(null," predicate: ");
cljs.core.pr.call(null,cljs.spec.abbrev.call(null,pred_12021));
if(cljs.core.truth_(reason_12023)){
cljs.core.print.call(null,", ",reason_12023);
} else {
}
var seq__11979_12026 = cljs.core.seq.call(null,prob_12019);
var chunk__11980_12027 = null;
var count__11981_12028 = (0);
var i__11982_12029 = (0);
while(true){
if((i__11982_12029 < count__11981_12028)){
var vec__11983_12030 = cljs.core._nth.call(null,chunk__11980_12027,i__11982_12029);
var k_12031 = cljs.core.nth.call(null,vec__11983_12030,(0),null);
var v_12032 = cljs.core.nth.call(null,vec__11983_12030,(1),null);
if(cljs.core.truth_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 6, [new cljs.core.Keyword(null,"path","path",-188191168),null,new cljs.core.Keyword(null,"pred","pred",1927423397),null,new cljs.core.Keyword(null,"via","via",-1904457336),null,new cljs.core.Keyword(null,"val","val",128701612),null,new cljs.core.Keyword(null,"reason","reason",-2070751759),null,new cljs.core.Keyword(null,"in","in",-1531184865),null], null), null).call(null,k_12031))){
} else {
cljs.core.print.call(null,"\n\t",cljs.core.pr_str.call(null,k_12031)," ");
cljs.core.pr.call(null,v_12032);
}
var G__12033 = seq__11979_12026;
var G__12034 = chunk__11980_12027;
var G__12035 = count__11981_12028;
var G__12036 = (i__11982_12029 + (1));
seq__11979_12026 = G__12033;
chunk__11980_12027 = G__12034;
count__11981_12028 = G__12035;
i__11982_12029 = G__12036;
continue;
} else {
var temp__4657__auto___12037 = cljs.core.seq.call(null,seq__11979_12026);
if(temp__4657__auto___12037){
var seq__11979_12038__$1 = temp__4657__auto___12037;
if(cljs.core.chunked_seq_QMARK_.call(null,seq__11979_12038__$1)){
var c__7705__auto___12039 = cljs.core.chunk_first.call(null,seq__11979_12038__$1);
var G__12040 = cljs.core.chunk_rest.call(null,seq__11979_12038__$1);
var G__12041 = c__7705__auto___12039;
var G__12042 = cljs.core.count.call(null,c__7705__auto___12039);
var G__12043 = (0);
seq__11979_12026 = G__12040;
chunk__11980_12027 = G__12041;
count__11981_12028 = G__12042;
i__11982_12029 = G__12043;
continue;
} else {
var vec__11986_12044 = cljs.core.first.call(null,seq__11979_12038__$1);
var k_12045 = cljs.core.nth.call(null,vec__11986_12044,(0),null);
var v_12046 = cljs.core.nth.call(null,vec__11986_12044,(1),null);
if(cljs.core.truth_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 6, [new cljs.core.Keyword(null,"path","path",-188191168),null,new cljs.core.Keyword(null,"pred","pred",1927423397),null,new cljs.core.Keyword(null,"via","via",-1904457336),null,new cljs.core.Keyword(null,"val","val",128701612),null,new cljs.core.Keyword(null,"reason","reason",-2070751759),null,new cljs.core.Keyword(null,"in","in",-1531184865),null], null), null).call(null,k_12045))){
} else {
cljs.core.print.call(null,"\n\t",cljs.core.pr_str.call(null,k_12045)," ");
cljs.core.pr.call(null,v_12046);
}
var G__12047 = cljs.core.next.call(null,seq__11979_12038__$1);
var G__12048 = null;
var G__12049 = (0);
var G__12050 = (0);
seq__11979_12026 = G__12047;
chunk__11980_12027 = G__12048;
count__11981_12028 = G__12049;
i__11982_12029 = G__12050;
continue;
}
} else {
}
}
break;
}
cljs.core.newline.call(null);
var G__12051 = seq__11973_12013;
var G__12052 = chunk__11974_12014;
var G__12053 = count__11975_12015;
var G__12054 = (i__11976_12016 + (1));
seq__11973_12013 = G__12051;
chunk__11974_12014 = G__12052;
count__11975_12015 = G__12053;
i__11976_12016 = G__12054;
continue;
} else {
var temp__4657__auto___12055 = cljs.core.seq.call(null,seq__11973_12013);
if(temp__4657__auto___12055){
var seq__11973_12056__$1 = temp__4657__auto___12055;
if(cljs.core.chunked_seq_QMARK_.call(null,seq__11973_12056__$1)){
var c__7705__auto___12057 = cljs.core.chunk_first.call(null,seq__11973_12056__$1);
var G__12058 = cljs.core.chunk_rest.call(null,seq__11973_12056__$1);
var G__12059 = c__7705__auto___12057;
var G__12060 = cljs.core.count.call(null,c__7705__auto___12057);
var G__12061 = (0);
seq__11973_12013 = G__12058;
chunk__11974_12014 = G__12059;
count__11975_12015 = G__12060;
i__11976_12016 = G__12061;
continue;
} else {
var map__11989_12062 = cljs.core.first.call(null,seq__11973_12056__$1);
var map__11989_12063__$1 = ((((!((map__11989_12062 == null)))?((((map__11989_12062.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__11989_12062.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__11989_12062):map__11989_12062);
var prob_12064 = map__11989_12063__$1;
var path_12065 = cljs.core.get.call(null,map__11989_12063__$1,new cljs.core.Keyword(null,"path","path",-188191168));
var pred_12066 = cljs.core.get.call(null,map__11989_12063__$1,new cljs.core.Keyword(null,"pred","pred",1927423397));
var val_12067 = cljs.core.get.call(null,map__11989_12063__$1,new cljs.core.Keyword(null,"val","val",128701612));
var reason_12068 = cljs.core.get.call(null,map__11989_12063__$1,new cljs.core.Keyword(null,"reason","reason",-2070751759));
var via_12069 = cljs.core.get.call(null,map__11989_12063__$1,new cljs.core.Keyword(null,"via","via",-1904457336));
var in_12070 = cljs.core.get.call(null,map__11989_12063__$1,new cljs.core.Keyword(null,"in","in",-1531184865));
if(cljs.core.empty_QMARK_.call(null,in_12070)){
} else {
cljs.core.print.call(null,"In:",cljs.core.pr_str.call(null,in_12070),"");
}
cljs.core.print.call(null,"val: ");
cljs.core.pr.call(null,val_12067);
cljs.core.print.call(null," fails");
if(cljs.core.empty_QMARK_.call(null,via_12069)){
} else {
cljs.core.print.call(null," spec:",cljs.core.pr_str.call(null,cljs.core.last.call(null,via_12069)));
}
if(cljs.core.empty_QMARK_.call(null,path_12065)){
} else {
cljs.core.print.call(null," at:",cljs.core.pr_str.call(null,path_12065));
}
cljs.core.print.call(null," predicate: ");
cljs.core.pr.call(null,cljs.spec.abbrev.call(null,pred_12066));
if(cljs.core.truth_(reason_12068)){
cljs.core.print.call(null,", ",reason_12068);
} else {
}
var seq__11991_12071 = cljs.core.seq.call(null,prob_12064);
var chunk__11992_12072 = null;
var count__11993_12073 = (0);
var i__11994_12074 = (0);
while(true){
if((i__11994_12074 < count__11993_12073)){
var vec__11995_12075 = cljs.core._nth.call(null,chunk__11992_12072,i__11994_12074);
var k_12076 = cljs.core.nth.call(null,vec__11995_12075,(0),null);
var v_12077 = cljs.core.nth.call(null,vec__11995_12075,(1),null);
if(cljs.core.truth_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 6, [new cljs.core.Keyword(null,"path","path",-188191168),null,new cljs.core.Keyword(null,"pred","pred",1927423397),null,new cljs.core.Keyword(null,"via","via",-1904457336),null,new cljs.core.Keyword(null,"val","val",128701612),null,new cljs.core.Keyword(null,"reason","reason",-2070751759),null,new cljs.core.Keyword(null,"in","in",-1531184865),null], null), null).call(null,k_12076))){
} else {
cljs.core.print.call(null,"\n\t",cljs.core.pr_str.call(null,k_12076)," ");
cljs.core.pr.call(null,v_12077);
}
var G__12078 = seq__11991_12071;
var G__12079 = chunk__11992_12072;
var G__12080 = count__11993_12073;
var G__12081 = (i__11994_12074 + (1));
seq__11991_12071 = G__12078;
chunk__11992_12072 = G__12079;
count__11993_12073 = G__12080;
i__11994_12074 = G__12081;
continue;
} else {
var temp__4657__auto___12082__$1 = cljs.core.seq.call(null,seq__11991_12071);
if(temp__4657__auto___12082__$1){
var seq__11991_12083__$1 = temp__4657__auto___12082__$1;
if(cljs.core.chunked_seq_QMARK_.call(null,seq__11991_12083__$1)){
var c__7705__auto___12084 = cljs.core.chunk_first.call(null,seq__11991_12083__$1);
var G__12085 = cljs.core.chunk_rest.call(null,seq__11991_12083__$1);
var G__12086 = c__7705__auto___12084;
var G__12087 = cljs.core.count.call(null,c__7705__auto___12084);
var G__12088 = (0);
seq__11991_12071 = G__12085;
chunk__11992_12072 = G__12086;
count__11993_12073 = G__12087;
i__11994_12074 = G__12088;
continue;
} else {
var vec__11998_12089 = cljs.core.first.call(null,seq__11991_12083__$1);
var k_12090 = cljs.core.nth.call(null,vec__11998_12089,(0),null);
var v_12091 = cljs.core.nth.call(null,vec__11998_12089,(1),null);
if(cljs.core.truth_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 6, [new cljs.core.Keyword(null,"path","path",-188191168),null,new cljs.core.Keyword(null,"pred","pred",1927423397),null,new cljs.core.Keyword(null,"via","via",-1904457336),null,new cljs.core.Keyword(null,"val","val",128701612),null,new cljs.core.Keyword(null,"reason","reason",-2070751759),null,new cljs.core.Keyword(null,"in","in",-1531184865),null], null), null).call(null,k_12090))){
} else {
cljs.core.print.call(null,"\n\t",cljs.core.pr_str.call(null,k_12090)," ");
cljs.core.pr.call(null,v_12091);
}
var G__12092 = cljs.core.next.call(null,seq__11991_12083__$1);
var G__12093 = null;
var G__12094 = (0);
var G__12095 = (0);
seq__11991_12071 = G__12092;
chunk__11992_12072 = G__12093;
count__11993_12073 = G__12094;
i__11994_12074 = G__12095;
continue;
}
} else {
}
}
break;
}
cljs.core.newline.call(null);
var G__12096 = cljs.core.next.call(null,seq__11973_12056__$1);
var G__12097 = null;
var G__12098 = (0);
var G__12099 = (0);
seq__11973_12013 = G__12096;
chunk__11974_12014 = G__12097;
count__11975_12015 = G__12098;
i__11976_12016 = G__12099;
continue;
}
} else {
}
}
break;
}
var seq__12001_12100 = cljs.core.seq.call(null,ed);
var chunk__12002_12101 = null;
var count__12003_12102 = (0);
var i__12004_12103 = (0);
while(true){
if((i__12004_12103 < count__12003_12102)){
var vec__12005_12104 = cljs.core._nth.call(null,chunk__12002_12101,i__12004_12103);
var k_12105 = cljs.core.nth.call(null,vec__12005_12104,(0),null);
var v_12106 = cljs.core.nth.call(null,vec__12005_12104,(1),null);
if(cljs.core.truth_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("cljs.spec","problems","cljs.spec/problems",608491678),null], null), null).call(null,k_12105))){
} else {
cljs.core.print.call(null,cljs.core.pr_str.call(null,k_12105)," ");
cljs.core.pr.call(null,v_12106);
cljs.core.newline.call(null);
}
var G__12107 = seq__12001_12100;
var G__12108 = chunk__12002_12101;
var G__12109 = count__12003_12102;
var G__12110 = (i__12004_12103 + (1));
seq__12001_12100 = G__12107;
chunk__12002_12101 = G__12108;
count__12003_12102 = G__12109;
i__12004_12103 = G__12110;
continue;
} else {
var temp__4657__auto___12111 = cljs.core.seq.call(null,seq__12001_12100);
if(temp__4657__auto___12111){
var seq__12001_12112__$1 = temp__4657__auto___12111;
if(cljs.core.chunked_seq_QMARK_.call(null,seq__12001_12112__$1)){
var c__7705__auto___12113 = cljs.core.chunk_first.call(null,seq__12001_12112__$1);
var G__12114 = cljs.core.chunk_rest.call(null,seq__12001_12112__$1);
var G__12115 = c__7705__auto___12113;
var G__12116 = cljs.core.count.call(null,c__7705__auto___12113);
var G__12117 = (0);
seq__12001_12100 = G__12114;
chunk__12002_12101 = G__12115;
count__12003_12102 = G__12116;
i__12004_12103 = G__12117;
continue;
} else {
var vec__12008_12118 = cljs.core.first.call(null,seq__12001_12112__$1);
var k_12119 = cljs.core.nth.call(null,vec__12008_12118,(0),null);
var v_12120 = cljs.core.nth.call(null,vec__12008_12118,(1),null);
if(cljs.core.truth_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("cljs.spec","problems","cljs.spec/problems",608491678),null], null), null).call(null,k_12119))){
} else {
cljs.core.print.call(null,cljs.core.pr_str.call(null,k_12119)," ");
cljs.core.pr.call(null,v_12120);
cljs.core.newline.call(null);
}
var G__12121 = cljs.core.next.call(null,seq__12001_12112__$1);
var G__12122 = null;
var G__12123 = (0);
var G__12124 = (0);
seq__12001_12100 = G__12121;
chunk__12002_12101 = G__12122;
count__12003_12102 = G__12123;
i__12004_12103 = G__12124;
continue;
}
} else {
}
}
break;
}
}finally {cljs.core._STAR_print_fn_STAR_ = _STAR_print_fn_STAR_11972_12012;
cljs.core._STAR_print_newline_STAR_ = _STAR_print_newline_STAR_11971_12011;
}
return [cljs.core.str(sb__7880__auto__)].join('');
})());
} else {
return cljs.core.println.call(null,"Success!");
}
});
cljs.spec._STAR_explain_out_STAR_ = cljs.spec.explain_printer;
/**
* Prints explanation data (per 'explain-data') to *out* using the printer in *explain-out*,
* by default explain-printer.
*/
cljs.spec.explain_out = (function cljs$spec$explain_out(ed){
return cljs.spec._STAR_explain_out_STAR_.call(null,ed);
});
/**
* Given a spec and a value that fails to conform, prints an explanation to *out*.
*/
cljs.spec.explain = (function cljs$spec$explain(spec,x){
return cljs.spec.explain_out.call(null,cljs.spec.explain_data.call(null,spec,x));
});
/**
* Given a spec and a value that fails to conform, returns an explanation as a string.
*/
cljs.spec.explain_str = (function cljs$spec$explain_str(spec,x){
var sb__7880__auto__ = (new goog.string.StringBuffer());
var _STAR_print_newline_STAR_12127_12129 = cljs.core._STAR_print_newline_STAR_;
var _STAR_print_fn_STAR_12128_12130 = cljs.core._STAR_print_fn_STAR_;
cljs.core._STAR_print_newline_STAR_ = true;
cljs.core._STAR_print_fn_STAR_ = ((function (_STAR_print_newline_STAR_12127_12129,_STAR_print_fn_STAR_12128_12130,sb__7880__auto__){
return (function (x__7881__auto__){
return sb__7880__auto__.append(x__7881__auto__);
});})(_STAR_print_newline_STAR_12127_12129,_STAR_print_fn_STAR_12128_12130,sb__7880__auto__))
;
try{cljs.spec.explain.call(null,spec,x);
}finally {cljs.core._STAR_print_fn_STAR_ = _STAR_print_fn_STAR_12128_12130;
cljs.core._STAR_print_newline_STAR_ = _STAR_print_newline_STAR_12127_12129;
}
return [cljs.core.str(sb__7880__auto__)].join('');
});
cljs.spec.gensub = (function cljs$spec$gensub(spec,overrides,path,rmap,form){
var spec__$1 = cljs.spec.specize.call(null,spec);
var temp__4655__auto__ = (function (){var or__6891__auto__ = (function (){var temp__4657__auto__ = (function (){var or__6891__auto__ = cljs.core.get.call(null,overrides,(function (){var or__6891__auto__ = cljs.spec.spec_name.call(null,spec__$1);
if(cljs.core.truth_(or__6891__auto__)){
return or__6891__auto__;
} else {
return spec__$1;
}
})());
if(cljs.core.truth_(or__6891__auto__)){
return or__6891__auto__;
} else {
return cljs.core.get.call(null,overrides,path);
}
})();
if(cljs.core.truth_(temp__4657__auto__)){
var gfn = temp__4657__auto__;
return gfn.call(null);
} else {
return null;
}
})();
if(cljs.core.truth_(or__6891__auto__)){
return or__6891__auto__;
} else {
return cljs.spec.gen_STAR_.call(null,spec__$1,overrides,path,rmap);
}
})();
if(cljs.core.truth_(temp__4655__auto__)){
var g = temp__4655__auto__;
return cljs.spec.impl.gen.such_that.call(null,((function (g,temp__4655__auto__,spec__$1){
return (function (p1__12131_SHARP_){
return cljs.spec.valid_QMARK_.call(null,spec__$1,p1__12131_SHARP_);
});})(g,temp__4655__auto__,spec__$1))
,g,(100));
} else {
throw (new Error([cljs.core.str("Unable to construct gen at: "),cljs.core.str(path),cljs.core.str(" for: "),cljs.core.str(cljs.spec.abbrev.call(null,form))].join('')));
}
});
/**
* Given a spec, returns the generator for it, or throws if none can
* be constructed. Optionally an overrides map can be provided which
* should map spec names or paths (vectors of keywords) to no-arg
* generator-creating fns. These will be used instead of the generators at those
* names/paths. Note that parent generator (in the spec or overrides
* map) will supersede those of any subtrees. A generator for a regex
* op must always return a sequential collection (i.e. a generator for
* s/? should return either an empty sequence/vector or a
* sequence/vector with one item in it)
*/
cljs.spec.gen = (function cljs$spec$gen(var_args){
var args12132 = [];
var len__7999__auto___12135 = arguments.length;
var i__8000__auto___12136 = (0);
while(true){
if((i__8000__auto___12136 < len__7999__auto___12135)){
args12132.push((arguments[i__8000__auto___12136]));
var G__12137 = (i__8000__auto___12136 + (1));
i__8000__auto___12136 = G__12137;
continue;
} else {
}
break;
}
var G__12134 = args12132.length;
switch (G__12134) {
case 1:
return cljs.spec.gen.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
break;
case 2:
return cljs.spec.gen.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
break;
default:
throw (new Error([cljs.core.str("Invalid arity: "),cljs.core.str(args12132.length)].join('')));
}
});
cljs.spec.gen.cljs$core$IFn$_invoke$arity$1 = (function (spec){
return cljs.spec.gen.call(null,spec,null);
});
cljs.spec.gen.cljs$core$IFn$_invoke$arity$2 = (function (spec,overrides){
return cljs.spec.gensub.call(null,spec,overrides,cljs.core.PersistentVector.EMPTY,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("cljs.spec","recursion-limit","cljs.spec/recursion-limit",-630131086),cljs.spec._STAR_recursion_limit_STAR_], null),spec);
});
cljs.spec.gen.cljs$lang$maxFixedArity = 2;
/**
* Do not call this directly, use 'def'
*/
cljs.spec.def_impl = (function cljs$spec$def_impl(k,form,spec){
if(cljs.core.truth_((function (){var and__6879__auto__ = cljs.spec.named_QMARK_.call(null,k);
if(cljs.core.truth_(and__6879__auto__)){
return cljs.core.namespace.call(null,k);
} else {
return and__6879__auto__;
}
})())){
} else {
throw (new Error([cljs.core.str("Assert failed: "),cljs.core.str("k must be namespaced keyword or resolveable symbol"),cljs.core.str("\n"),cljs.core.str("(c/and (named? k) (namespace k))")].join('')));
}
var spec__$1 = (cljs.core.truth_((function (){var or__6891__auto__ = cljs.spec.spec_QMARK_.call(null,spec);
if(cljs.core.truth_(or__6891__auto__)){
return or__6891__auto__;
} else {
var or__6891__auto____$1 = cljs.spec.regex_QMARK_.call(null,spec);
if(cljs.core.truth_(or__6891__auto____$1)){
return or__6891__auto____$1;
} else {
return cljs.core.get.call(null,cljs.core.deref.call(null,cljs.spec.registry_ref),spec);
}
}
})())?spec:cljs.spec.spec_impl.call(null,form,spec,null,null));
cljs.core.swap_BANG_.call(null,cljs.spec.registry_ref,cljs.core.assoc,k,spec__$1);
return k;
});
/**
* returns the registry map, prefer 'get-spec' to lookup a spec by name
*/
cljs.spec.registry = (function cljs$spec$registry(){
return cljs.core.deref.call(null,cljs.spec.registry_ref);
});
/**
* Returns a symbol from a symbol or var
*/
cljs.spec.__GT_sym = (function cljs$spec$__GT_sym(x){
if(cljs.core.var_QMARK_.call(null,x)){
return x.sym;
} else {
return x;
}
});
/**
* Returns spec registered for keyword/symbol/var k, or nil.
*/
cljs.spec.get_spec = (function cljs$spec$get_spec(k){
return cljs.core.get.call(null,cljs.spec.registry.call(null),(((k instanceof cljs.core.Keyword))?k:cljs.spec.__GT_sym.call(null,k)));
});
cljs.spec.macroexpand_check = (function cljs$spec$macroexpand_check(v,args){
var specs = cljs.spec.get_spec.call(null,v);
var temp__4657__auto__ = new cljs.core.Keyword(null,"args","args",1315556576).cljs$core$IFn$_invoke$arity$1(specs);
if(cljs.core.truth_(temp__4657__auto__)){
var arg_spec = temp__4657__auto__;
if(cljs.core._EQ_.call(null,new cljs.core.Keyword("cljs.spec","invalid","cljs.spec/invalid",551677537),cljs.spec.conform.call(null,arg_spec,args))){
var ed = cljs.core.assoc.call(null,cljs.spec.explain_data_STAR_.call(null,arg_spec,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"args","args",1315556576)], null),(function (){var temp__4655__auto__ = cljs.spec.spec_name.call(null,arg_spec);
if(cljs.core.truth_(temp__4655__auto__)){
var name = temp__4655__auto__;
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [name], null);
} else {
return cljs.core.PersistentVector.EMPTY;
}
})(),cljs.core.PersistentVector.EMPTY,args),new cljs.core.Keyword("cljs.spec","args","cljs.spec/args",-367019609),args);
throw (new Error([cljs.core.str("Call to "),cljs.core.str(cljs.spec.__GT_sym.call(null,v)),cljs.core.str(" did not conform to spec:\n"),cljs.core.str((function (){var sb__7880__auto__ = (new goog.string.StringBuffer());
var _STAR_print_newline_STAR_12141_12143 = cljs.core._STAR_print_newline_STAR_;
var _STAR_print_fn_STAR_12142_12144 = cljs.core._STAR_print_fn_STAR_;
cljs.core._STAR_print_newline_STAR_ = true;
cljs.core._STAR_print_fn_STAR_ = ((function (_STAR_print_newline_STAR_12141_12143,_STAR_print_fn_STAR_12142_12144,sb__7880__auto__,ed,arg_spec,temp__4657__auto__,specs){
return (function (x__7881__auto__){
return sb__7880__auto__.append(x__7881__auto__);
});})(_STAR_print_newline_STAR_12141_12143,_STAR_print_fn_STAR_12142_12144,sb__7880__auto__,ed,arg_spec,temp__4657__auto__,specs))
;
try{cljs.spec.explain_out.call(null,ed);
}finally {cljs.core._STAR_print_fn_STAR_ = _STAR_print_fn_STAR_12142_12144;
cljs.core._STAR_print_newline_STAR_ = _STAR_print_newline_STAR_12141_12143;
}
return [cljs.core.str(sb__7880__auto__)].join('');
})())].join('')));
} else {
return null;
}
} else {
return null;
}
});
cljs.spec.recur_limit_QMARK_ = (function cljs$spec$recur_limit_QMARK_(rmap,id,path,k){
return ((cljs.core.get.call(null,rmap,id) > new cljs.core.Keyword("cljs.spec","recursion-limit","cljs.spec/recursion-limit",-630131086).cljs$core$IFn$_invoke$arity$1(rmap))) && (cljs.core.contains_QMARK_.call(null,cljs.core.set.call(null,path),k));
});
cljs.spec.inck = (function cljs$spec$inck(m,k){
return cljs.core.assoc.call(null,m,k,((function (){var or__6891__auto__ = cljs.core.get.call(null,m,k);
if(cljs.core.truth_(or__6891__auto__)){
return or__6891__auto__;
} else {
return (0);
}
})() + (1)));
});
cljs.spec.dt = (function cljs$spec$dt(var_args){
var args12145 = [];
var len__7999__auto___12148 = arguments.length;
var i__8000__auto___12149 = (0);
while(true){
if((i__8000__auto___12149 < len__7999__auto___12148)){
args12145.push((arguments[i__8000__auto___12149]));
var G__12150 = (i__8000__auto___12149 + (1));
i__8000__auto___12149 = G__12150;
continue;
} else {
}
break;
}
var G__12147 = args12145.length;
switch (G__12147) {
case 3:
return cljs.spec.dt.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
break;
case 4:
return cljs.spec.dt.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
break;
default:
throw (new Error([cljs.core.str("Invalid arity: "),cljs.core.str(args12145.length)].join('')));
}
});
cljs.spec.dt.cljs$core$IFn$_invoke$arity$3 = (function (pred,x,form){
return cljs.spec.dt.call(null,pred,x,form,null);
});
cljs.spec.dt.cljs$core$IFn$_invoke$arity$4 = (function (pred,x,form,cpred_QMARK_){
if(cljs.core.truth_(pred)){
var temp__4655__auto__ = cljs.spec.the_spec.call(null,pred);
if(cljs.core.truth_(temp__4655__auto__)){
var spec = temp__4655__auto__;
return cljs.spec.conform.call(null,spec,x);
} else {
if(cljs.core.ifn_QMARK_.call(null,pred)){
if(cljs.core.truth_(cpred_QMARK_)){
return pred.call(null,x);
} else {
if(cljs.core.truth_(pred.call(null,x))){
return x;
} else {
return new cljs.core.Keyword("cljs.spec","invalid","cljs.spec/invalid",551677537);
}
}
} else {
throw (new Error([cljs.core.str(cljs.core.pr_str.call(null,form)),cljs.core.str(" is not a fn, expected predicate fn")].join('')));
}
}
} else {
return x;
}
});
cljs.spec.dt.cljs$lang$maxFixedArity = 4;
/**
* Helper function that returns true when x is valid for spec.
*/
cljs.spec.valid_QMARK_ = (function cljs$spec$valid_QMARK_(var_args){
var args12152 = [];
var len__7999__auto___12155 = arguments.length;
var i__8000__auto___12156 = (0);
while(true){
if((i__8000__auto___12156 < len__7999__auto___12155)){
args12152.push((arguments[i__8000__auto___12156]));
var G__12157 = (i__8000__auto___12156 + (1));
i__8000__auto___12156 = G__12157;
continue;
} else {
}
break;
}
var G__12154 = args12152.length;
switch (G__12154) {
case 2:
return cljs.spec.valid_QMARK_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
break;
case 3:
return cljs.spec.valid_QMARK_.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
break;
default:
throw (new Error([cljs.core.str("Invalid arity: "),cljs.core.str(args12152.length)].join('')));
}
});
cljs.spec.valid_QMARK_.cljs$core$IFn$_invoke$arity$2 = (function (spec,x){
return cljs.core.not_EQ_.call(null,new cljs.core.Keyword("cljs.spec","invalid","cljs.spec/invalid",551677537),cljs.spec.dt.call(null,spec,x,new cljs.core.Keyword("cljs.spec","unknown","cljs.spec/unknown",-1620309582)));
});
cljs.spec.valid_QMARK_.cljs$core$IFn$_invoke$arity$3 = (function (spec,x,form){
return cljs.core.not_EQ_.call(null,new cljs.core.Keyword("cljs.spec","invalid","cljs.spec/invalid",551677537),cljs.spec.dt.call(null,spec,x,form));
});
cljs.spec.valid_QMARK_.cljs$lang$maxFixedArity = 3;
cljs.spec.explain_1 = (function cljs$spec$explain_1(form,pred,path,via,in$,v){
var pred__$1 = cljs.spec.maybe_spec.call(null,pred);
if(cljs.core.truth_(cljs.spec.spec_QMARK_.call(null,pred__$1))){
return cljs.spec.explain_STAR_.call(null,pred__$1,path,(function (){var temp__4655__auto__ = cljs.spec.spec_name.call(null,pred__$1);
if(cljs.core.truth_(temp__4655__auto__)){
var name = temp__4655__auto__;
return cljs.core.conj.call(null,via,name);
} else {
return via;
}
})(),in$,v);
} else {
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,"path","path",-188191168),path,new cljs.core.Keyword(null,"pred","pred",1927423397),cljs.spec.abbrev.call(null,form),new cljs.core.Keyword(null,"val","val",128701612),v,new cljs.core.Keyword(null,"via","via",-1904457336),via,new cljs.core.Keyword(null,"in","in",-1531184865),in$], null)], null);
}
});
/**
* Do not call this directly, use 'spec' with a map argument
*/
cljs.spec.map_spec_impl = (function cljs$spec$map_spec_impl(p__12162){
var map__12193 = p__12162;
var map__12193__$1 = ((((!((map__12193 == null)))?((((map__12193.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__12193.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__12193):map__12193);
var argm = map__12193__$1;
var opt = cljs.core.get.call(null,map__12193__$1,new cljs.core.Keyword(null,"opt","opt",-794706369));
var req_un = cljs.core.get.call(null,map__12193__$1,new cljs.core.Keyword(null,"req-un","req-un",1074571008));
var opt_un = cljs.core.get.call(null,map__12193__$1,new cljs.core.Keyword(null,"opt-un","opt-un",883442496));
var gfn = cljs.core.get.call(null,map__12193__$1,new cljs.core.Keyword(null,"gfn","gfn",791517474));
var pred_exprs = cljs.core.get.call(null,map__12193__$1,new cljs.core.Keyword(null,"pred-exprs","pred-exprs",1792271395));
var opt_keys = cljs.core.get.call(null,map__12193__$1,new cljs.core.Keyword(null,"opt-keys","opt-keys",1262688261));
var req_specs = cljs.core.get.call(null,map__12193__$1,new cljs.core.Keyword(null,"req-specs","req-specs",553962313));
var req = cljs.core.get.call(null,map__12193__$1,new cljs.core.Keyword(null,"req","req",-326448303));
var req_keys = cljs.core.get.call(null,map__12193__$1,new cljs.core.Keyword(null,"req-keys","req-keys",514319221));
var opt_specs = cljs.core.get.call(null,map__12193__$1,new cljs.core.Keyword(null,"opt-specs","opt-specs",-384905450));
var pred_forms = cljs.core.get.call(null,map__12193__$1,new cljs.core.Keyword(null,"pred-forms","pred-forms",172611832));
var keys_pred = cljs.core.apply.call(null,cljs.core.every_pred,pred_exprs);
var k__GT_s = cljs.core.zipmap.call(null,cljs.core.concat.call(null,req_keys,opt_keys),cljs.core.concat.call(null,req_specs,opt_specs));
var keys__GT_specs = ((function (keys_pred,k__GT_s,map__12193,map__12193__$1,argm,opt,req_un,opt_un,gfn,pred_exprs,opt_keys,req_specs,req,req_keys,opt_specs,pred_forms){
return (function (p1__12159_SHARP_){
var or__6891__auto__ = k__GT_s.call(null,p1__12159_SHARP_);
if(cljs.core.truth_(or__6891__auto__)){
return or__6891__auto__;
} else {
return p1__12159_SHARP_;
}
});})(keys_pred,k__GT_s,map__12193,map__12193__$1,argm,opt,req_un,opt_un,gfn,pred_exprs,opt_keys,req_specs,req,req_keys,opt_specs,pred_forms))
;
var id = cljs.core.random_uuid.call(null);
if(typeof cljs.spec.t_cljs$spec12195 !== 'undefined'){
} else {
/**
* @constructor
* @implements {cljs.core.IMeta}
* @implements {cljs.spec.Spec}
* @implements {cljs.core.IWithMeta}
*/
cljs.spec.t_cljs$spec12195 = (function (opt,req_un,opt_un,gfn,pred_exprs,keys_pred,argm,opt_keys,req_specs,map__12193,keys__GT_specs,req,p__12162,id,req_keys,opt_specs,k__GT_s,pred_forms,meta12196){
this.opt = opt;
this.req_un = req_un;
this.opt_un = opt_un;
this.gfn = gfn;
this.pred_exprs = pred_exprs;
this.keys_pred = keys_pred;
this.argm = argm;
this.opt_keys = opt_keys;
this.req_specs = req_specs;
this.map__12193 = map__12193;
this.keys__GT_specs = keys__GT_specs;
this.req = req;
this.p__12162 = p__12162;
this.id = id;
this.req_keys = req_keys;
this.opt_specs = opt_specs;
this.k__GT_s = k__GT_s;
this.pred_forms = pred_forms;
this.meta12196 = meta12196;
this.cljs$lang$protocol_mask$partition0$ = 393216;
this.cljs$lang$protocol_mask$partition1$ = 0;
})
cljs.spec.t_cljs$spec12195.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = ((function (keys_pred,k__GT_s,keys__GT_specs,id,map__12193,map__12193__$1,argm,opt,req_un,opt_un,gfn,pred_exprs,opt_keys,req_specs,req,req_keys,opt_specs,pred_forms){
return (function (_12197,meta12196__$1){
var self__ = this;
var _12197__$1 = this;
return (new cljs.spec.t_cljs$spec12195(self__.opt,self__.req_un,self__.opt_un,self__.gfn,self__.pred_exprs,self__.keys_pred,self__.argm,self__.opt_keys,self__.req_specs,self__.map__12193,self__.keys__GT_specs,self__.req,self__.p__12162,self__.id,self__.req_keys,self__.opt_specs,self__.k__GT_s,self__.pred_forms,meta12196__$1));
});})(keys_pred,k__GT_s,keys__GT_specs,id,map__12193,map__12193__$1,argm,opt,req_un,opt_un,gfn,pred_exprs,opt_keys,req_specs,req,req_keys,opt_specs,pred_forms))
;
cljs.spec.t_cljs$spec12195.prototype.cljs$core$IMeta$_meta$arity$1 = ((function (keys_pred,k__GT_s,keys__GT_specs,id,map__12193,map__12193__$1,argm,opt,req_un,opt_un,gfn,pred_exprs,opt_keys,req_specs,req,req_keys,opt_specs,pred_forms){
return (function (_12197){
var self__ = this;
var _12197__$1 = this;
return self__.meta12196;
});})(keys_pred,k__GT_s,keys__GT_specs,id,map__12193,map__12193__$1,argm,opt,req_un,opt_un,gfn,pred_exprs,opt_keys,req_specs,req,req_keys,opt_specs,pred_forms))
;
cljs.spec.t_cljs$spec12195.prototype.cljs$spec$Spec$ = cljs.core.PROTOCOL_SENTINEL;
cljs.spec.t_cljs$spec12195.prototype.cljs$spec$Spec$conform_STAR_$arity$2 = ((function (keys_pred,k__GT_s,keys__GT_specs,id,map__12193,map__12193__$1,argm,opt,req_un,opt_un,gfn,pred_exprs,opt_keys,req_specs,req,req_keys,opt_specs,pred_forms){
return (function (_,m){
var self__ = this;
var ___$1 = this;
if(cljs.core.truth_(self__.keys_pred.call(null,m))){
var reg = cljs.spec.registry.call(null);
var ret = m;
var G__12201 = cljs.core.keys.call(null,m);
var vec__12202 = G__12201;
var seq__12203 = cljs.core.seq.call(null,vec__12202);
var first__12204 = cljs.core.first.call(null,seq__12203);
var seq__12203__$1 = cljs.core.next.call(null,seq__12203);
var k = first__12204;
var ks = seq__12203__$1;
var keys = vec__12202;
var ret__$1 = ret;
var G__12201__$1 = G__12201;
while(true){
var ret__$2 = ret__$1;
var vec__12205 = G__12201__$1;
var seq__12206 = cljs.core.seq.call(null,vec__12205);
var first__12207 = cljs.core.first.call(null,seq__12206);
var seq__12206__$1 = cljs.core.next.call(null,seq__12206);
var k__$1 = first__12207;
var ks__$1 = seq__12206__$1;
var keys__$1 = vec__12205;
if(cljs.core.truth_(keys__$1)){
if(cljs.core.contains_QMARK_.call(null,reg,self__.keys__GT_specs.call(null,k__$1))){
var v = cljs.core.get.call(null,m,k__$1);
var cv = cljs.spec.conform.call(null,self__.keys__GT_specs.call(null,k__$1),v);
if(cljs.core._EQ_.call(null,cv,new cljs.core.Keyword("cljs.spec","invalid","cljs.spec/invalid",551677537))){
return new cljs.core.Keyword("cljs.spec","invalid","cljs.spec/invalid",551677537);
} else {
var G__12223 = (((cv === v))?ret__$2:cljs.core.assoc.call(null,ret__$2,k__$1,cv));
var G__12224 = ks__$1;
ret__$1 = G__12223;
G__12201__$1 = G__12224;
continue;
}
} else {
var G__12225 = ret__$2;
var G__12226 = ks__$1;
ret__$1 = G__12225;
G__12201__$1 = G__12226;
continue;
}
} else {
return ret__$2;
}
break;
}
} else {
return new cljs.core.Keyword("cljs.spec","invalid","cljs.spec/invalid",551677537);
}
});})(keys_pred,k__GT_s,keys__GT_specs,id,map__12193,map__12193__$1,argm,opt,req_un,opt_un,gfn,pred_exprs,opt_keys,req_specs,req,req_keys,opt_specs,pred_forms))
;
cljs.spec.t_cljs$spec12195.prototype.cljs$spec$Spec$unform_STAR_$arity$2 = ((function (keys_pred,k__GT_s,keys__GT_specs,id,map__12193,map__12193__$1,argm,opt,req_un,opt_un,gfn,pred_exprs,opt_keys,req_specs,req,req_keys,opt_specs,pred_forms){
return (function (_,m){
var self__ = this;
var ___$1 = this;
var reg = cljs.spec.registry.call(null);
var ret = m;
var G__12211 = cljs.core.keys.call(null,m);
var vec__12212 = G__12211;
var seq__12213 = cljs.core.seq.call(null,vec__12212);
var first__12214 = cljs.core.first.call(null,seq__12213);
var seq__12213__$1 = cljs.core.next.call(null,seq__12213);
var k = first__12214;
var ks = seq__12213__$1;
var keys = vec__12212;
var ret__$1 = ret;
var G__12211__$1 = G__12211;
while(true){
var ret__$2 = ret__$1;
var vec__12215 = G__12211__$1;