| {{# def.definitions }} | 
| {{# def.errors }} | 
| {{# def.setupKeyword }} | 
|   | 
| {{## def._validateRef:_v: | 
|   {{? it.opts.passContext }} | 
|     {{=_v}}.call(this, | 
|   {{??}} | 
|     {{=_v}}( | 
|   {{?}} | 
|     {{=$data}}, {{# def.dataPath }}{{# def.passParentData }}, rootData) | 
| #}} | 
|   | 
| {{ var $async, $refCode; }} | 
| {{? $schema == '#' || $schema == '#/' }} | 
|   {{ | 
|     if (it.isRoot) { | 
|       $async = it.async; | 
|       $refCode = 'validate'; | 
|     } else { | 
|       $async = it.root.schema.$async === true; | 
|       $refCode = 'root.refVal[0]'; | 
|     } | 
|   }} | 
| {{??}} | 
|   {{ var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); }} | 
|   {{? $refVal === undefined }} | 
|     {{ var $message = it.MissingRefError.message(it.baseId, $schema); }} | 
|     {{? it.opts.missingRefs == 'fail' }} | 
|       {{ it.logger.error($message); }} | 
|       {{# def.error:'$ref' }} | 
|       {{? $breakOnError }} if (false) { {{?}} | 
|     {{?? it.opts.missingRefs == 'ignore' }} | 
|       {{ it.logger.warn($message); }} | 
|       {{? $breakOnError }} if (true) { {{?}} | 
|     {{??}} | 
|       {{ throw new it.MissingRefError(it.baseId, $schema, $message); }} | 
|     {{?}} | 
|   {{?? $refVal.inline }} | 
|     {{# def.setupNextLevel }} | 
|     {{ | 
|       $it.schema = $refVal.schema; | 
|       $it.schemaPath = ''; | 
|       $it.errSchemaPath = $schema; | 
|     }} | 
|     {{ var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); }} | 
|     {{= $code }} | 
|     {{? $breakOnError}} | 
|       if ({{=$nextValid}}) { | 
|     {{?}} | 
|   {{??}} | 
|     {{ | 
|       $async = $refVal.$async === true || (it.async && $refVal.$async !== false); | 
|       $refCode = $refVal.code; | 
|     }} | 
|   {{?}} | 
| {{?}} | 
|   | 
| {{? $refCode }} | 
|   {{# def.beginDefOut}} | 
|     {{# def._validateRef:$refCode }} | 
|   {{# def.storeDefOut:__callValidate }} | 
|   | 
|   {{? $async }} | 
|     {{ if (!it.async) throw new Error('async schema referenced by sync schema'); }} | 
|     {{? $breakOnError }} var {{=$valid}}; {{?}} | 
|     try { | 
|       await {{=__callValidate}}; | 
|       {{? $breakOnError }} {{=$valid}} = true; {{?}} | 
|     } catch (e) { | 
|       if (!(e instanceof ValidationError)) throw e; | 
|       if (vErrors === null) vErrors = e.errors; | 
|       else vErrors = vErrors.concat(e.errors); | 
|       errors = vErrors.length; | 
|       {{? $breakOnError }} {{=$valid}} = false; {{?}} | 
|     } | 
|     {{? $breakOnError }} if ({{=$valid}}) { {{?}} | 
|   {{??}} | 
|     if (!{{=__callValidate}}) { | 
|       if (vErrors === null) vErrors = {{=$refCode}}.errors; | 
|       else vErrors = vErrors.concat({{=$refCode}}.errors); | 
|       errors = vErrors.length; | 
|     } {{? $breakOnError }} else { {{?}} | 
|   {{?}} | 
| {{?}} |