diff --git a/index.html b/index.html index 1f13536a7..55b6ca303 100644 --- a/index.html +++ b/index.html @@ -37,7 +37,7 @@ - + \ No newline at end of file diff --git a/v6/assets/a.028dc271.json b/v6/assets/a.028dc271.json deleted file mode 100644 index a7a781d7c..000000000 --- a/v6/assets/a.028dc271.json +++ /dev/null @@ -1 +0,0 @@ -{"title":"CASL Mongoose","categories":["package"],"order":110,"meta":{"keywords":null,"description":null},"content":"

CASL Mongoose

\n

\"@casl/mongoose\n\"\"\n\"CASL

\n

This package integrates CASL and MongoDB. In other words, it allows to fetch records based on CASL rules from MongoDB and answer questions like: "Which records can be read?" or "Which records can be updated?".

\n

Installation

\n
npm install @casl/mongoose @casl/ability\n# or\nyarn add @casl/mongoose @casl/ability\n# or\npnpm add @casl/mongoose @casl/ability\n
\n

Integration with mongoose

\n

mongoose is a popular JavaScript ODM for MongoDB. @casl/mongoose provides 2 plugins that allow to integrate @casl/ability and mongoose in few minutes:

\n

Accessible Records plugin

\n

accessibleRecordsPlugin is a plugin which adds accessibleBy method to query and static methods of mongoose models. We can add this plugin globally:

\n
const { accessibleRecordsPlugin } = require('@casl/mongoose');\nconst mongoose = require('mongoose');\n\nmongoose.plugin(accessibleRecordsPlugin);\n
\n
\n

Make sure to add the plugin before calling mongoose.model(...) method. Mongoose won't add global plugins to models that where created before calling mongoose.plugin().

\n
\n

or to a particular model:

\n
const mongoose = require('mongoose')\nconst { accessibleRecordsPlugin } = require('@casl/mongoose')\n\nconst Post = new mongoose.Schema({\n  title: String,\n  author: String\n})\n\nPost.plugin(accessibleRecordsPlugin)\n\nmodule.exports = mongoose.model('Post', Post)\n
\n

Afterwards, we can fetch accessible records using accessibleBy method on Post:

\n
const Post = require('./Post')\nconst ability = require('./ability') // defines Ability instance\n\nasync function main() {\n  const accessiblePosts = await Post.accessibleBy(ability);\n  console.log(accessiblePosts);\n}\n
\n
\n

See CASL guide to learn how to define abilities

\n
\n

or on existing query instance:

\n
const Post = require('./Post');\nconst ability = require('./ability');\n\nasync function main() {\n  const accessiblePosts = await Post.find({ status: 'draft' })\n    .accessibleBy(ability)\n    .select('title');\n  console.log(accessiblePosts);\n}\n
\n

accessibleBy returns an instance of mongoose.Query and that means you can chain it with any mongoose.Query's method (e.g., select, limit, sort). By default, accessibleBy constructs a query based on the list of rules for read action but we can change this by providing the 2nd optional argument:

\n
const Post = require('./Post');\nconst ability = require('./ability');\n\nasync function main() {\n  const postsThatCanBeUpdated = await Post.accessibleBy(ability, 'update');\n  console.log(postsThatCanBeUpdated);\n}\n
\n
\n

accessibleBy is built on top of rulesToQuery function from @casl/ability/extra. Read Ability to database query to get insights of how it works.

\n
\n

In case user doesn’t have permission to do a particular action, CASL will throw ForbiddenError and will not send request to MongoDB. It also adds __forbiddenByCasl__: 1 condition for additional safety.

\n

For example, lets find all posts which user can delete (we haven’t defined abilities for delete):

\n
const { defineAbility } = require('@casl/ability');\nconst mongoose = require('mongoose');\nconst Post = require('./Post');\n\nmongoose.set('debug', true);\n\nconst ability = defineAbility(can => can('read', 'Post', { private: false }));\n\nasync function main() {\n  try {\n    const posts = await Post.accessibleBy(ability, 'delete');\n  } catch (error) {\n    console.log(error) // ForbiddenError;\n  }\n}\n
\n

We can also use the resulting conditions in aggregation pipeline:

\n
const Post = require('./Post');\nconst ability = require('./ability');\n\nasync function main() {\n  const query = Post.accessibleBy(ability)\n    .where({ status: 'draft' })\n    .getQuery();\n  const result = await Post.aggregate([\n    {\n      $match: {\n        $and: [\n          query,\n          // other aggregate conditions\n        ]\n      }\n    },\n    // other pipelines here\n  ]);\n  console.log(result);\n}\n
\n

or in mapReduce:

\n
const Post = require('./Post');\nconst ability = require('./ability');\n\nasync function main() {\n  const query = Post.accessibleBy(ability)\n    .where({ status: 'draft' })\n    .getQuery();\n  const result = await Post.mapReduce({\n    query: {\n      $and: [\n        query,\n        // other conditions\n      ]\n    },\n    map: () => emit(this.title, 1);\n    reduce: (_, items) => items.length;\n  });\n  console.log(result);\n}\n
\n

Accessible Fields plugin

\n

accessibleFieldsPlugin is a plugin that adds accessibleFieldsBy method to instance and static methods of a model and allows to retrieve all accessible fields. This is useful when we need to send only accessible part of a model in response:

\n
const { accessibleFieldsPlugin } = require('@casl/mongoose');\nconst mongoose = require('mongoose');\nconst pick = require('lodash/pick');\nconst ability = require('./ability');\nconst app = require('./app'); // express app\n\nmongoose.plugin(accessibleFieldsPlugin);\n\nconst Post = require('./Post');\n\napp.get('/api/posts/:id', async (req, res) => {\n  const post = await Post.accessibleBy(ability).findByPk(req.params.id);\n  res.send(pick(post, post.accessibleFieldsBy(ability))\n});\n
\n

Method with the same name exists on Model's class. But it's important to understand the difference between them. Static method does not take into account conditions! It follows the same checking logic as Ability's can method. Let's see an example to recap:

\n
const { defineAbility } = require('@casl/ability');\nconst Post = require('./Post');\n\nconst ability = defineAbility((can) => {\n  can('read', 'Post', ['title'], { private: true });\n  can('read', 'Post', ['title', 'description'], { private: false });\n});\nconst post = new Post({ private: true, title: 'Private post' });\n\nPost.accessibleFieldsBy(ability); // ['title', 'description']\npost.accessibleFieldsBy(ability); // ['title']\n
\n

As you can see, a static method returns all fields that can be read for all posts. At the same time, an instance method returns fields that can be read from this particular post instance. That's why there is no much sense (except you want to reduce traffic between app and database) to pass the result of static method into mongoose.Query's select method because eventually you will need to call accessibleFieldsBy on every instance.

\n

Integration with other MongoDB libraries

\n

In case you don't use mongoose, this package provides toMongoQuery function which can convert CASL rules into MongoDB query. Lets see an example of how to fetch accessible records using raw MongoDB adapter

\n
const { toMongoQuery } = require('@casl/mongoose');\nconst { MongoClient } = require('mongodb');\nconst ability = require('./ability');\n\nasync function main() {\n  const db = await MongoClient.connect('mongodb://localhost:27017/blog');\n  const query = toMongoQuery(ability, 'Post', 'update');\n  let posts;\n\n  try {\n    if (query === null) {\n      // returns null if ability does not allow to update posts\n      posts = [];\n    } else {\n      posts = await db.collection('posts').find(query);\n    }\n  } finally {\n    db.close();\n  }\n\n  console.log(posts);\n}\n
\n

TypeScript support

\n

The package is written in TypeScript, this makes it easier to work with plugins and toMongoQuery helper because IDE provides useful hints. Let's see it in action!

\n

Suppose we have Post entity which can be described as:

\n
import mongoose from 'mongoose';\n\nexport interface Post extends mongoose.Document {\n  title: string\n  content: string\n  published: boolean\n}\n\nconst PostSchema = new mongoose.Schema<Post>({\n  title: String,\n  content: String,\n  published: Boolean\n});\n\nexport const Post = mongoose.model('Post', PostSchema);\n
\n

To extend Post model with accessibleBy method it's enough to include the corresponding plugin (either globally or locally in Post) and use corresponding Model type. So, let's change the example, so it includes accessibleRecordsPlugin:

\n
import { accessibleRecordsPlugin, AccessibleRecordModel } from '@casl/mongoose';\n\n// all previous code, except last line\n\nPostSchema.plugin(accessibleRecordsPlugin);\n\nexport const Post = mongoose.model<Post, AccessibleRecordModel<Post>>('Post', PostSchema);\n\n// Now we can safely use `Post.accessibleBy` method.\nPost.accessibleBy(/* parameters */)\nPost.where(/* parameters */).accessibleBy(/* parameters */);\n
\n

In the similar manner, we can include accessibleFieldsPlugin, using AccessibleFieldsModel and AccessibleFieldsDocument types:

\n
import {\n  accessibleFieldsPlugin,\n  AccessibleFieldsModel,\n  AccessibleFieldsDocument\n} from '@casl/mongoose';\nimport * as mongoose from 'mongoose';\n\nexport interface Post extends AccessibleFieldsDocument {\n  // the same Post definition from previous example\n}\n\nconst PostSchema = new mongoose.Schema<Post>({\n  // the same Post schema definition from previous example\n})\n\nPostSchema.plugin(accessibleFieldsPlugin);\n\nexport const Post = mongoose.model<Post, AccessibleFieldsModel<Post>>('Post', PostSchema);\n\n// Now we can safely use `Post.accessibleFieldsBy` method and `post.accessibleFieldsBy`\nPost.accessibleFieldsBy(/* parameters */);\nconst post = new Post();\npost.accessibleFieldsBy(/* parameters */);\n
\n

And if we want to include both plugins, we can use AccessibleModel type that provides methods from both plugins:

\n
import {\n  accessibleFieldsPlugin,\n  accessibleRecordsPlugin,\n  AccessibleModel,\n  AccessibleFieldsDocument\n} from '@casl/mongoose';\nimport * as mongoose from 'mongoose';\n\nexport interface Post extends AccessibleFieldsDocument {\n  // the same Post definition from previous example\n}\n\nconst PostSchema = new mongoose.Schema<Post>({\n  // the same Post schema definition from previous example\n});\nPostSchema.plugin(accessibleFieldsPlugin);\nPostSchema.plugin(accessibleRecordsPlugin);\n\nexport const Post = mongoose.model<Post, AccessibleModel<Post>>('Post', PostSchema);\n
\n

This allows us to use the both accessibleBy and accessibleFieldsBy methods safely.

\n

Want to help?

\n

Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on guidelines for contributing.

\n

If you'd like to help us sustain our community and project, consider to become a financial contributor on Open Collective

\n
\n

See Support CASL for details

\n
\n

License

\n

MIT License

","headings":[{"id":"casl-mongoose","title":"CASL Mongoose"},{"id":"installation","title":"Installation"},{"id":"integration-with-mongoose","title":"Integration with mongoose"},{"id":"accessible-records-plugin","title":"Accessible Records plugin"},{"id":"accessible-fields-plugin","title":"Accessible Fields plugin"},{"id":"integration-with-other-mongo-db-libraries","title":"Integration with other MongoDB libraries"},{"id":"type-script-support","title":"TypeScript support"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}],"id":"package/casl-mongoose"} \ No newline at end of file diff --git a/v6/assets/a.388c5727.json b/v6/assets/a.388c5727.json new file mode 100644 index 000000000..7950e590d --- /dev/null +++ b/v6/assets/a.388c5727.json @@ -0,0 +1 @@ +{"title":"CASL Mongoose","categories":["package"],"order":110,"meta":{"keywords":null,"description":null},"content":"

CASL Mongoose

\n

\"@casl/mongoose\n\"\"\n\"CASL

\n

This package integrates CASL and MongoDB. In other words, it allows to fetch records based on CASL rules from MongoDB and answer questions like: "Which records can be read?" or "Which records can be updated?".

\n

Installation

\n
npm install @casl/mongoose @casl/ability\n# or\nyarn add @casl/mongoose @casl/ability\n# or\npnpm add @casl/mongoose @casl/ability\n
\n

Usage

\n

@casl/mongoose can be integrated not only with mongoose but also with any MongoDB JS driver thanks to new accessibleBy helper function.

\n

accessibleBy helper

\n

This neat helper function allows to convert ability rules to MongoDB query and fetch only accessible records from the database. It can be used with mongoose or MongoDB adapter:

\n

MongoDB adapter

\n
const { accessibleBy } = require('@casl/mongoose');\nconst { MongoClient } = require('mongodb');\nconst ability = require('./ability');\n\nasync function main() {\n  const db = await MongoClient.connect('mongodb://localhost:27017/blog');\n  let posts;\n\n  try {\n    posts = await db.collection('posts').find(accessibleBy(ability, 'update').Post);\n  } finally {\n    db.close();\n  }\n\n  console.log(posts);\n}\n
\n

This can also be combined with other conditions with help of $and operator:

\n
posts = await db.collection('posts').find({\n  $and: [\n    accessibleBy(ability, 'update').Post,\n    { public: true }\n  ]\n});\n
\n

Important!: never use spread operator (i.e., ...) to combine conditions provided by accessibleBy with something else because you may accidentally overwrite properties that restrict access to particular records:

\n
// returns { authorId: 1 }\nconst permissionRestrictedConditions = accessibleBy(ability, 'update').Post;\n\nconst query = {\n  ...permissionRestrictedConditions,\n  authorId: 2\n};\n
\n

In the case above, we overwrote authorId property and basically allowed non-authorized access to posts of author with id = 2

\n

If there are no permissions defined for particular action/subjectType, accessibleBy will return { $expr: false } and when it's sent to MongoDB, it will return an empty result set.

\n

Mongoose

\n
const Post = require('./Post') // mongoose model\nconst ability = require('./ability') // defines Ability instance\n\nasync function main() {\n  const accessiblePosts = await Post.find(accessibleBy(ability).Post);\n  console.log(accessiblePosts);\n}\n
\n

accessibleBy returns a Proxy instance and then we access particular subject type by reading its property. Property name is then passed to Ability methods as subjectType. With Typescript we can restrict this properties only to know record types:

\n

accessibleBy in TypeScript

\n

If we want to get hints in IDE regarding what record types (i.e., entity or model names) can be accessed in return value of accessibleBy we can easily do this by using module augmentation:

\n
import { accessibleBy } from '@casl/mongoose';\nimport { ability } from './ability'; // defines Ability instance\n\ndeclare module '@casl/mongoose' {\n  interface RecordTypes {\n    Post: true\n    User: true\n  }\n}\n\naccessibleBy(ability).User // allows only User and Post properties\n
\n

This can be done either centrally, in the single place or it can be defined in every model/entity definition file. For example, we can augment @casl/mongoose in every mongoose model definition file:

\n
import mongoose from 'mongoose';\n\nconst PostSchema = new mongoose.Schema({\n  title: String,\n  author: String\n});\n\ndeclare module '@casl/mongoose' {\n  interface RecordTypes {\n    Post: true\n  }\n}\n\nexport const Post = mongoose.model('Post', PostSchema)\n
\n

Historically, @casl/mongoose was intended for super easy integration with mongoose but now we re-orient it to be more MongoDB specific package because mongoose keeps bringing complexity and issues with ts types.

\n

Accessible Records plugin

\n

This plugin is deprecated, the recommended way is to use accessibleBy helper function

\n

accessibleRecordsPlugin is a plugin which adds accessibleBy method to query and static methods of mongoose models. We can add this plugin globally:

\n
const { accessibleRecordsPlugin } = require('@casl/mongoose');\nconst mongoose = require('mongoose');\n\nmongoose.plugin(accessibleRecordsPlugin);\n
\n
\n

Make sure to add the plugin before calling mongoose.model(...) method. Mongoose won't add global plugins to models that where created before calling mongoose.plugin().

\n
\n

or to a particular model:

\n
const mongoose = require('mongoose')\nconst { accessibleRecordsPlugin } = require('@casl/mongoose')\n\nconst Post = new mongoose.Schema({\n  title: String,\n  author: String\n})\n\nPost.plugin(accessibleRecordsPlugin)\n\nmodule.exports = mongoose.model('Post', Post)\n
\n

Afterwards, we can fetch accessible records using accessibleBy method on Post:

\n
const Post = require('./Post')\nconst ability = require('./ability') // defines Ability instance\n\nasync function main() {\n  const accessiblePosts = await Post.accessibleBy(ability);\n  console.log(accessiblePosts);\n}\n
\n
\n

See CASL guide to learn how to define abilities

\n
\n

or on existing query instance:

\n
const Post = require('./Post');\nconst ability = require('./ability');\n\nasync function main() {\n  const accessiblePosts = await Post.find({ status: 'draft' })\n    .accessibleBy(ability)\n    .select('title');\n  console.log(accessiblePosts);\n}\n
\n

accessibleBy returns an instance of mongoose.Query and that means you can chain it with any mongoose.Query's method (e.g., select, limit, sort). By default, accessibleBy constructs a query based on the list of rules for read action but we can change this by providing the 2nd optional argument:

\n
const Post = require('./Post');\nconst ability = require('./ability');\n\nasync function main() {\n  const postsThatCanBeUpdated = await Post.accessibleBy(ability, 'update');\n  console.log(postsThatCanBeUpdated);\n}\n
\n
\n

accessibleBy is built on top of rulesToQuery function from @casl/ability/extra. Read Ability to database query to get insights of how it works.

\n
\n

In case user doesn’t have permission to do a particular action, CASL will throw ForbiddenError and will not send request to MongoDB. It also adds __forbiddenByCasl__: 1 condition for additional safety.

\n

For example, lets find all posts which user can delete (we haven’t defined abilities for delete):

\n
const { defineAbility } = require('@casl/ability');\nconst mongoose = require('mongoose');\nconst Post = require('./Post');\n\nmongoose.set('debug', true);\n\nconst ability = defineAbility(can => can('read', 'Post', { private: false }));\n\nasync function main() {\n  try {\n    const posts = await Post.accessibleBy(ability, 'delete');\n  } catch (error) {\n    console.log(error) // ForbiddenError;\n  }\n}\n
\n

We can also use the resulting conditions in aggregation pipeline:

\n
const Post = require('./Post');\nconst ability = require('./ability');\n\nasync function main() {\n  const query = Post.accessibleBy(ability)\n    .where({ status: 'draft' })\n    .getQuery();\n  const result = await Post.aggregate([\n    {\n      $match: {\n        $and: [\n          query,\n          // other aggregate conditions\n        ]\n      }\n    },\n    // other pipelines here\n  ]);\n  console.log(result);\n}\n
\n

or in mapReduce:

\n
const Post = require('./Post');\nconst ability = require('./ability');\n\nasync function main() {\n  const query = Post.accessibleBy(ability)\n    .where({ status: 'draft' })\n    .getQuery();\n  const result = await Post.mapReduce({\n    query: {\n      $and: [\n        query,\n        // other conditions\n      ]\n    },\n    map: () => emit(this.title, 1);\n    reduce: (_, items) => items.length;\n  });\n  console.log(result);\n}\n
\n

Accessible Fields plugin

\n

accessibleFieldsPlugin is a plugin that adds accessibleFieldsBy method to instance and static methods of a model and allows to retrieve all accessible fields. This is useful when we need to send only accessible part of a model in response:

\n
const { accessibleFieldsPlugin } = require('@casl/mongoose');\nconst mongoose = require('mongoose');\nconst pick = require('lodash/pick');\nconst ability = require('./ability');\nconst app = require('./app'); // express app\n\nmongoose.plugin(accessibleFieldsPlugin);\n\nconst Post = require('./Post');\n\napp.get('/api/posts/:id', async (req, res) => {\n  const post = await Post.accessibleBy(ability).findByPk(req.params.id);\n  res.send(pick(post, post.accessibleFieldsBy(ability))\n});\n
\n

Method with the same name exists on Model's class. But it's important to understand the difference between them. Static method does not take into account conditions! It follows the same checking logic as Ability's can method. Let's see an example to recap:

\n
const { defineAbility } = require('@casl/ability');\nconst Post = require('./Post');\n\nconst ability = defineAbility((can) => {\n  can('read', 'Post', ['title'], { private: true });\n  can('read', 'Post', ['title', 'description'], { private: false });\n});\nconst post = new Post({ private: true, title: 'Private post' });\n\nPost.accessibleFieldsBy(ability); // ['title', 'description']\npost.accessibleFieldsBy(ability); // ['title']\n
\n

As you can see, a static method returns all fields that can be read for all posts. At the same time, an instance method returns fields that can be read from this particular post instance. That's why there is no much sense (except you want to reduce traffic between app and database) to pass the result of static method into mongoose.Query's select method because eventually you will need to call accessibleFieldsBy on every instance.

\n

TypeScript support in mongoose

\n

The package is written in TypeScript, this makes it easier to work with plugins and toMongoQuery helper because IDE provides useful hints. Let's see it in action!

\n

Suppose we have Post entity which can be described as:

\n
import mongoose from 'mongoose';\n\nexport interface Post extends mongoose.Document {\n  title: string\n  content: string\n  published: boolean\n}\n\nconst PostSchema = new mongoose.Schema<Post>({\n  title: String,\n  content: String,\n  published: Boolean\n});\n\nexport const Post = mongoose.model('Post', PostSchema);\n
\n

To extend Post model with accessibleBy method it's enough to include the corresponding plugin (either globally or locally in Post) and use corresponding Model type. So, let's change the example, so it includes accessibleRecordsPlugin:

\n
import { accessibleRecordsPlugin, AccessibleRecordModel } from '@casl/mongoose';\n\n// all previous code, except last line\n\nPostSchema.plugin(accessibleRecordsPlugin);\n\nexport const Post = mongoose.model<Post, AccessibleRecordModel<Post>>('Post', PostSchema);\n\n// Now we can safely use `Post.accessibleBy` method.\nPost.accessibleBy(/* parameters */)\nPost.where(/* parameters */).accessibleBy(/* parameters */);\n
\n

In the similar manner, we can include accessibleFieldsPlugin, using AccessibleFieldsModel and AccessibleFieldsDocument types:

\n
import {\n  accessibleFieldsPlugin,\n  AccessibleFieldsModel,\n  AccessibleFieldsDocument\n} from '@casl/mongoose';\nimport * as mongoose from 'mongoose';\n\nexport interface Post extends AccessibleFieldsDocument {\n  // the same Post definition from previous example\n}\n\nconst PostSchema = new mongoose.Schema<Post>({\n  // the same Post schema definition from previous example\n})\n\nPostSchema.plugin(accessibleFieldsPlugin);\n\nexport const Post = mongoose.model<Post, AccessibleFieldsModel<Post>>('Post', PostSchema);\n\n// Now we can safely use `Post.accessibleFieldsBy` method and `post.accessibleFieldsBy`\nPost.accessibleFieldsBy(/* parameters */);\nconst post = new Post();\npost.accessibleFieldsBy(/* parameters */);\n
\n

And if we want to include both plugins, we can use AccessibleModel type that provides methods from both plugins:

\n
import {\n  accessibleFieldsPlugin,\n  accessibleRecordsPlugin,\n  AccessibleModel,\n  AccessibleFieldsDocument\n} from '@casl/mongoose';\nimport * as mongoose from 'mongoose';\n\nexport interface Post extends AccessibleFieldsDocument {\n  // the same Post definition from previous example\n}\n\nconst PostSchema = new mongoose.Schema<Post>({\n  // the same Post schema definition from previous example\n});\nPostSchema.plugin(accessibleFieldsPlugin);\nPostSchema.plugin(accessibleRecordsPlugin);\n\nexport const Post = mongoose.model<Post, AccessibleModel<Post>>('Post', PostSchema);\n
\n

This allows us to use the both accessibleBy and accessibleFieldsBy methods safely.

\n

Want to help?

\n

Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on guidelines for contributing.

\n

If you'd like to help us sustain our community and project, consider to become a financial contributor on Open Collective

\n
\n

See Support CASL for details

\n
\n

License

\n

MIT License

","headings":[{"id":"casl-mongoose","title":"CASL Mongoose"},{"id":"installation","title":"Installation"},{"id":"usage","title":"Usage"},{"id":"accessible-by-helper","title":"accessibleBy helper"},{"id":"mongo-db-adapter","title":"MongoDB adapter"},{"id":"mongoose","title":"Mongoose"},{"id":"accessible-by-in-type-script","title":"accessibleBy in TypeScript"},{"id":"accessible-records-plugin","title":"Accessible Records plugin"},{"id":"accessible-fields-plugin","title":"Accessible Fields plugin"},{"id":"type-script-support-in-mongoose","title":"TypeScript support in mongoose"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}],"id":"package/casl-mongoose"} \ No newline at end of file diff --git a/v6/assets/content_pages_searchIndexes.en.22966191.json b/v6/assets/content_pages_searchIndexes.en.22966191.json deleted file mode 100644 index c1e1a8cb8..000000000 --- a/v6/assets/content_pages_searchIndexes.en.22966191.json +++ /dev/null @@ -1 +0,0 @@ -{"index":{"_tree":{"4":{"":{"1":{"df":1,"ds":{"j":1}}}},"16":{"":{"1":{"df":1,"ds":{"j":1}}}},"a":{"bilit":{"y":{"":{"0":{"df":4,"ds":{"0":1,"1":1,"l":1,"m":1}},"1":{"df":6,"ds":{"0":1,"f":1,"g":1,"j":3,"k":2,"o":1}}},"builder":{"":{"1":{"df":3,"ds":{"0":5,"a":3,"o":1}}}},"service":{"":{"1":{"df":1,"ds":{"f":1}}}},"optionsof":{"":{"1":{"df":1,"ds":{"o":1}}}}},"ies":{"":{"0":{"df":1,"ds":{"2":1}},"1":{"df":1,"ds":{"7":1}}}}},"void":{"":{"1":{"df":5,"ds":{"2":1,"3":1,"4":1,"5":1,"6":1}}}},"":{"1":{"df":2,"ds":{"8":2,"j":1}}},"rray":{"":{"1":{"df":1,"ds":{"8":3}}}},"l":{"ternative":{"":{"1":{"df":4,"ds":{"2":1,"4":1,"6":1,"7":1}}}},"iases":{"":{"0":{"df":1,"ds":{"9":1}},"1":{"df":2,"ds":{"j":1,"k":1}}}}},"c":{"tion":{"":{"0":{"df":1,"ds":{"9":1}}}},"cess":{"":{"0":{"df":1,"ds":{"d":1}},"1":{"df":1,"ds":{"j":1}}},"ible":{"":{"1":{"df":2,"ds":{"h":2,"i":1}},"2":{"df":1,"ds":{"i":1}}}}}},"p":{"i":{"":{"0":{"df":3,"ds":{"0":1,"1":1,"5":1}},"1":{"df":1,"ds":{"k":2}}}},"p":{"module":{"":{"1":{"df":1,"ds":{"f":1}}}},"lication":{"":{"1":{"df":1,"ds":{"o":1}}}}}},"u":{"thorization":{"":{"0":{"df":1,"ds":{"3":1}},"2":{"df":1,"ds":{"i":1}}}},"relia":{"":{"0":{"df":1,"ds":{"g":1}},"1":{"df":1,"ds":{"g":1}}}},"gment":{"":{"1":{"df":1,"ds":{"k":1}}}}},"ttribute":{"":{"1":{"df":1,"ds":{"g":1}}}},"n":{"gular":{"":{"0":{"df":1,"ds":{"f":1}},"1":{"df":1,"ds":{"f":1}}}},"y":{"ability":{"":{"1":{"df":1,"ds":{"o":1}}}},"mongoability":{"":{"1":{"df":1,"ds":{"o":1}}}}}}},"c":{"reate":{"mongoability":{"":{"1":{"df":1,"ds":{"0":2}}}},"aliasresolver":{"":{"1":{"df":1,"ds":{"0":1}}}}},"a":{"sl":{"":{"0":{"df":8,"ds":{"0":1,"1":1,"f":1,"g":1,"h":1,"i":1,"j":1,"k":1}},"1":{"df":9,"ds":{"8":1,"c":1,"e":1,"f":1,"g":1,"h":1,"i":1,"j":1,"k":1}},"2":{"df":1,"ds":{"i":1}}}},"che":{"":{"0":{"df":1,"ds":{"2":1}},"1":{"df":1,"ds":{"2":1}}}}},"o":{"okbook":{"":{"0":{"df":1,"ds":{"4":1}},"1":{"df":1,"ds":{"4":2}}}},"n":{"tributions":{"":{"1":{"df":1,"ds":{"4":1}}}},"clusion":{"":{"1":{"df":2,"ds":{"6":1,"7":1}}}},"ditions":{"":{"0":{"df":1,"ds":{"8":1}},"1":{"df":3,"ds":{"8":1,"c":1,"m":2}},"2":{"df":1,"ds":{"i":1}}}},"f":{"using":{"":{"0":{"df":1,"ds":{"5":1}}}},"igure":{"":{"1":{"df":1,"ds":{"f":1}}}}},"s":{"tructor":{"":{"1":{"df":1,"ds":{"0":2}}}},"iderations":{"":{"1":{"df":1,"ds":{"f":1}}}}},"verter":{"":{"1":{"df":1,"ds":{"g":1}}}}},"m":{"mon":{"":{"1":{"df":1,"ds":{"8":1}}}},"po":{"nent":{"":{"1":{"df":2,"ds":{"j":1,"k":2}}}},"sition":{"":{"1":{"df":1,"ds":{"k":1}}}}}}},"la":{"im":{"":{"0":{"df":1,"ds":{"3":1}}}},"ss":{"":{"1":{"df":1,"ds":{"a":1}}},"es":{"":{"1":{"df":2,"ds":{"e":1,"o":1}}}}}},"dn":{"":{"1":{"df":1,"ds":{"b":1}}}},"sp":{"":{"1":{"df":1,"ds":{"b":1}}}},"ustom":{"":{"1":{"df":4,"ds":{"e":1,"g":1,"i":1,"m":3}}},"ize":{"":{"0":{"df":1,"ds":{"m":1}}}}},"heck":{"ing":{"":{"1":{"df":2,"ds":{"8":1,"c":1}}}},"":{"1":{"df":2,"ds":{"f":2,"g":1}}}}},"r":{"oles":{"":{"0":{"df":2,"ds":{"6":1,"7":1}}}},"e":{"levantrulefor":{"":{"1":{"df":1,"ds":{"0":1}}}},"quirements":{"":{"1":{"df":1,"ds":{"b":1}}}},"a":{"sons":{"":{"1":{"df":1,"ds":{"c":1}}}},"dy":{"":{"1":{"df":1,"ds":{"c":1}}}},"ct":{"":{"0":{"df":1,"ds":{"j":1}},"1":{"df":1,"ds":{"j":2}}},"ive":{"":{"1":{"df":1,"ds":{"k":1}}}}}},"stricting":{"":{"0":{"df":1,"ds":{"d":1}}}},"co":{"mmended":{"":{"1":{"df":1,"ds":{"a":1}}}},"rd":{"s":{"":{"1":{"df":2,"ds":{"h":1,"i":1}}}},"":{"2":{"df":1,"ds":{"i":1}}}}}},"aw":{"":{"1":{"df":1,"ds":{"a":1}}},"rule":{"":{"1":{"df":1,"ds":{"o":1}}}}},"u":{"le":{"s":{"for":{"":{"1":{"df":1,"ds":{"0":1}}}},"":{"0":{"df":1,"ds":{"a":1}},"1":{"df":3,"ds":{"0":2,"a":2,"c":2}}},"to":{"query":{"":{"1":{"df":1,"ds":{"1":1}}}},"ast":{"":{"1":{"df":1,"ds":{"1":1}}}},"fields":{"":{"1":{"df":1,"ds":{"1":1}}}}}},"":{"1":{"df":1,"ds":{"a":1}}},"of":{"":{"1":{"df":1,"ds":{"o":1}}}}},"ntime":{"":{"1":{"df":1,"ds":{"i":1}},"2":{"df":1,"ds":{"i":1}}}}}},"p":{"ossiblerulesfor":{"":{"1":{"df":1,"ds":{"0":1}}}},"a":{"yload":{"":{"1":{"df":1,"ds":{"2":1}}}},"ck":{"rules":{"":{"1":{"df":1,"ds":{"1":1}}}},"ages":{"":{"1":{"df":1,"ds":{"b":2}}}}},"rty":{"":{"1":{"df":1,"ds":{"b":1}}}},"t":{"terns":{"":{"1":{"df":3,"ds":{"6":1,"7":1,"d":2}}}},"h":{"":{"1":{"df":1,"ds":{"i":1}}}}}},"er":{"sisted":{"":{"0":{"df":1,"ds":{"6":1}}}},"mi":{"ttedfieldsof":{"":{"1":{"df":1,"ds":{"1":1}}}},"ssion":{"s":{"":{"0":{"df":2,"ds":{"6":1,"7":1}},"1":{"df":3,"ds":{"f":2,"g":1,"o":2}},"2":{"df":1,"ds":{"i":1}}}},"":{"2":{"df":1,"ds":{"i":1}}}}},"formance":{"":{"1":{"df":1,"ds":{"f":1}}}}},"u":{"reability":{"":{"1":{"df":1,"ds":{"0":5}}}},"tting":{"":{"1":{"df":2,"ds":{"6":1,"7":1}}}}},"r":{"edefined":{"":{"0":{"df":1,"ds":{"7":1}}}},"actice":{"":{"1":{"df":1,"ds":{"a":1}}}},"isma":{"":{"0":{"df":1,"ds":{"i":1}},"1":{"df":1,"ds":{"i":2}},"2":{"df":1,"ds":{"i":2}}},"query":{"":{"1":{"df":1,"ds":{"i":1}}}},"client":{"":{"1":{"df":1,"ds":{"i":1}}}}},"o":{"pert":{"y":{"":{"1":{"df":4,"ds":{"0":2,"8":5,"j":1,"k":1}}}},"ies":{"":{"1":{"df":1,"ds":{"8":1}}}}},"videability":{"":{"1":{"df":1,"ds":{"k":1}}}}}},"npm":{"":{"1":{"df":1,"ds":{"b":1}}}},"ipe":{"":{"1":{"df":1,"ds":{"f":2}}}},"lugin":{"":{"1":{"df":2,"ds":{"h":2,"k":1}}}}},"s":{"olution":{"":{"1":{"df":6,"ds":{"2":1,"3":1,"4":1,"5":1,"6":1,"7":1}}}},"e":{"t":{"defaultmessage":{"":{"1":{"df":1,"ds":{"0":1}}}},"message":{"":{"1":{"df":1,"ds":{"0":1}}}}},"ssion":{"":{"1":{"df":1,"ds":{"2":1}}}},"rvices":{"":{"1":{"df":1,"ds":{"6":1}}}},"mantic":{"":{"1":{"df":1,"ds":{"b":1}}}}},"t":{"orage":{"":{"1":{"df":1,"ds":{"2":1}}}},"a":{"tic":{"":{"1":{"df":1,"ds":{"0":2}}}},"rted":{"":{"1":{"df":3,"ds":{"c":1,"g":1,"k":1}}}}}},"u":{"bject":{"":{"0":{"df":1,"ds":{"e":1}},"1":{"df":4,"ds":{"0":1,"e":4,"i":1,"o":1}}},"s":{"":{"1":{"df":1,"ds":{"i":1}}}}},"pport":{"ed":{"":{"1":{"df":1,"ds":{"8":1}}}},"":{"0":{"df":1,"ds":{"o":1}},"1":{"df":6,"ds":{"f":1,"g":1,"h":1,"i":1,"j":1,"k":1}}}}},"hape":{"":{"1":{"df":1,"ds":{"a":1}}}},"c":{"alar":{"":{"1":{"df":1,"ds":{"8":1}}}},"ript":{"":{"1":{"df":1,"ds":{"b":1}}}}},"afer":{"":{"1":{"df":1,"ds":{"o":1}}}}},"f":{"unction":{"":{"1":{"df":1,"ds":{"a":1}}}},"i":{"eld":{"patternmatcher":{"":{"1":{"df":1,"ds":{"0":1}}}},"s":{"":{"0":{"df":1,"ds":{"d":1}},"1":{"df":4,"ds":{"c":1,"d":1,"h":1,"o":1}}}},"":{"1":{"df":2,"ds":{"d":2,"m":1}}}},"nding":{"":{"1":{"df":1,"ds":{"i":1}}}}},"or":{"bidden":{"error":{"":{"1":{"df":1,"ds":{"0":1}}}},"":{"1":{"df":1,"ds":{"c":1}}}},"cedsubject":{"":{"1":{"df":1,"ds":{"o":1}}}}}},"u":{"pdate":{"":{"1":{"df":6,"ds":{"0":1,"c":1,"f":1,"g":1,"j":1,"k":1}}}},"npackrules":{"":{"1":{"df":1,"ds":{"1":1}}}},"s":{"age":{"":{"1":{"df":3,"ds":{"9":1,"i":1,"j":2}}}},"eability":{"":{"1":{"df":1,"ds":{"j":1}}}}}},"m":{"emory":{"":{"1":{"df":1,"ds":{"2":1}}}},"o":{"ngo":{"db":{"":{"1":{"df":2,"ds":{"8":1,"h":1}}}},"ose":{"":{"0":{"df":1,"ds":{"h":1}},"1":{"df":1,"ds":{"h":2}}}},"query":{"matcher":{"":{"1":{"df":1,"ds":{"0":1}}}},"":{"1":{"df":1,"ds":{"o":1}}}}},"del":{"":{"1":{"df":1,"ds":{"i":1}}}}},"a":{"tch":{"":{"1":{"df":1,"ds":{"8":5}}},"er":{"":{"1":{"df":1,"ds":{"m":2}}}}},"nagement":{"":{"2":{"df":1,"ds":{"i":1}}}}}},"t":{"hrowunlesscan":{"":{"1":{"df":1,"ds":{"0":1}}}},"oken":{"":{"1":{"df":1,"ds":{"2":1}}}},"a":{"g":{"":{"1":{"df":1,"ds":{"b":1}}}},"ble":{"":{"1":{"df":1,"ds":{"d":1}}}}},"ype":{"":{"0":{"df":1,"ds":{"e":1}},"1":{"df":2,"ds":{"e":2,"o":2}}},"s":{"":{"1":{"df":3,"ds":{"e":1,"k":1,"o":1}}},"cript":{"":{"0":{"df":1,"ds":{"o":1}},"1":{"df":6,"ds":{"f":1,"g":1,"h":1,"i":1,"j":2,"k":1}}}}}},"e":{"mplates":{"":{"1":{"df":2,"ds":{"f":2,"g":1}}}},"st":{"":{"2":{"df":1,"ds":{"i":1}}},"ing":{"":{"0":{"df":1,"ds":{"n":1}},"1":{"df":1,"ds":{"n":1}}}}}}},"b":{"uild":{"":{"1":{"df":2,"ds":{"0":1,"b":1}}},"mongoquerymatcher":{"":{"1":{"df":1,"ds":{"0":1}}}},"s":{"":{"1":{"df":1,"ds":{"b":1}}}}},"as":{"ed":{"":{"0":{"df":1,"ds":{"3":1}}}},"ics":{"":{"1":{"df":1,"ds":{"c":1}}}}},"ind":{"":{"1":{"df":1,"ds":{"j":1}}}}},"i":{"ssue":{"":{"1":{"df":6,"ds":{"2":1,"3":1,"4":1,"5":1,"6":1,"7":1}}}},"n":{"cluded":{"":{"1":{"df":1,"ds":{"8":1}}}},"v":{"alid":{"":{"1":{"df":1,"ds":{"9":1}}}},"erted":{"":{"1":{"df":2,"ds":{"a":1,"c":1}}}}},"sta":{"llation":{"":{"0":{"df":1,"ds":{"b":1}},"1":{"df":6,"ds":{"f":1,"g":1,"h":1,"i":1,"j":1,"k":1}}}},"nce":{"":{"1":{"df":4,"ds":{"f":1,"g":1,"j":3,"k":1}}}}},"t":{"roduction":{"":{"0":{"df":2,"ds":{"4":1,"c":1}}}},"e":{"gration":{"":{"1":{"df":1,"ds":{"h":2}}}},"r":{"preter":{"":{"1":{"df":1,"ds":{"i":1}}}},"faces":{"":{"1":{"df":1,"ds":{"o":1}}}}}}},"fer":{"ence":{"":{"1":{"df":1,"ds":{"o":3}}}},"":{"1":{"df":1,"ds":{"o":1}}}}},"tem":{"s":{"":{"1":{"df":1,"ds":{"8":2}}}},"":{"1":{"df":1,"ds":{"8":1}}}},"mp":{"erative":{"":{"1":{"df":1,"ds":{"j":1}}}},"lementation":{"":{"1":{"df":1,"ds":{"m":1}}}}}},"g":{"etdefaulterrormessage":{"":{"1":{"df":1,"ds":{"0":1}}}},"uide":{"":{"1":{"df":1,"ds":{"4":1}}}},"t":{"":{"1":{"df":1,"ds":{"b":1}}}}},"query":{"":{"0":{"df":1,"ds":{"l":1}},"1":{"df":2,"ds":{"8":2,"i":1}}}},"l":{"ru":{"":{"1":{"df":1,"ds":{"2":1}}}},"anguage":{"":{"1":{"df":1,"ds":{"8":1}}}},"ogic":{"al":{"":{"1":{"df":1,"ds":{"8":1}}}},"":{"1":{"df":2,"ds":{"8":1,"c":1}}}},"t":{"":{"1":{"df":2,"ds":{"b":1,"j":1}}}},"i":{"cense":{"":{"1":{"df":6,"ds":{"f":1,"g":1,"h":1,"i":1,"j":1,"k":1}}}},"brar":{"ies":{"":{"1":{"df":1,"ds":{"h":1}}}},"y":{"":{"2":{"df":1,"ds":{"i":1}}}}}}},"j":{"wt":{"":{"1":{"df":1,"ds":{"2":1}}}},"son":{"":{"1":{"df":1,"ds":{"a":3}}}}},"o":{"bjects":{"":{"1":{"df":1,"ds":{"a":3}}}},"rder":{"":{"1":{"df":1,"ds":{"a":1}}}},"fficial":{"":{"1":{"df":1,"ds":{"b":1}}}},"utput":{"":{"1":{"df":1,"ds":{"i":1}}}},"p":{"erators":{"":{"1":{"df":2,"ds":{"8":2,"m":1}}}},"tions":{"":{"1":{"df":1,"ds":{"k":1}}}}}},"3rd":{"":{"1":{"df":1,"ds":{"b":1}}}},"n":{"ested":{"":{"1":{"df":3,"ds":{"8":2,"d":1,"o":1}}}},"pm":{"":{"1":{"df":1,"ds":{"b":1}}}},"ames":{"":{"1":{"df":2,"ds":{"j":1,"k":1}}}},"ot":{"e":{"":{"1":{"df":2,"ds":{"i":2,"j":1}}}},"ation":{"":{"1":{"df":1,"ds":{"o":1}}}}}},"yarn":{"":{"1":{"df":1,"ds":{"b":1}}}},"d":{"e":{"mo":{"":{"1":{"df":4,"ds":{"2":1,"4":1,"6":1,"7":1}}}},"p":{"recated":{"":{"1":{"df":1,"ds":{"0":1}}}},"th":{"":{"0":{"df":1,"ds":{"8":1}}}}},"fine":{"ability":{"":{"1":{"df":2,"ds":{"0":1,"a":4}}}},"":{"0":{"df":2,"ds":{"9":1,"a":1}}}},"v":{"":{"1":{"df":1,"ds":{"b":1}}}},"tect":{"subjecttype":{"":{"1":{"df":1,"ds":{"0":2}}}},"ion":{"":{"0":{"df":1,"ds":{"e":1}},"1":{"df":1,"ds":{"e":1}}}},"":{"1":{"df":1,"ds":{"e":1}}}},"bugging":{"":{"0":{"df":1,"ds":{"n":1}},"1":{"df":1,"ds":{"n":1}}}}},"irective":{"":{"1":{"df":1,"ds":{"f":1}}}},"atabase":{"":{"0":{"df":1,"ds":{"l":1}}}},"o":{"wnload":{"":{"1":{"df":1,"ds":{"b":1}}}},"t":{"":{"1":{"df":1,"ds":{"o":1}}}}}},"w":{"ays":{"":{"1":{"df":2,"ds":{"2":1,"4":1}}}},"ebpack":{"":{"1":{"df":1,"ds":{"b":1}}}}},"e":{"x":{"planation":{"":{"1":{"df":1,"ds":{"b":1}}}},"t":{"ra":{"":{"0":{"df":1,"ds":{"1":1}}}},"end":{"":{"1":{"df":1,"ds":{"m":1}}}}}},"nvironments":{"":{"1":{"df":1,"ds":{"b":1}}}}},"h":{"elper":{"":{"1":{"df":2,"ds":{"e":1,"i":1}}},"s":{"":{"1":{"df":1,"ds":{"o":1}}}}},"ook":{"s":{"":{"1":{"df":1,"ds":{"j":1}}}},"":{"1":{"df":1,"ds":{"k":1}}}}},"v":{"ersion":{"ing":{"":{"1":{"df":1,"ds":{"b":1}}}},"s":{"":{"1":{"df":1,"ds":{"b":1}}}}},"ue":{"":{"0":{"df":1,"ds":{"k":1}},"1":{"df":1,"ds":{"k":2}}}}}},"_prefix":""},"documentCount":25,"nextId":25,"documentIds":{"0":"api/casl-ability","1":"api/casl-ability-extra","2":"cookbook/cache-rules","3":"cookbook/claim-authorization","4":"cookbook/intro","5":"cookbook/less-confusing-can-api","6":"cookbook/roles-with-persisted-permissions","7":"cookbook/roles-with-static-permissions","8":"guide/conditions-in-depth","9":"guide/define-aliases","a":"guide/define-rules","b":"guide/install","c":"guide/intro","d":"guide/restricting-fields","e":"guide/subject-type-detection","f":"package/casl-angular","g":"package/casl-aurelia","h":"package/casl-mongoose","i":"package/casl-prisma","j":"package/casl-react","k":"package/casl-vue","l":"advanced/ability-to-database-query","m":"advanced/customize-ability","n":"advanced/debugging-testing","o":"advanced/typescript"},"fieldIds":{"title":0,"headings":1,"summary":2},"fieldLength":{"0":{"0":4,"1":53},"1":{"0":5,"1":6},"2":{"0":2,"1":21},"3":{"0":3,"1":7},"4":{"0":2,"1":19},"5":{"0":4,"1":7},"6":{"0":4,"1":14},"7":{"0":4,"1":11},"8":{"0":3,"1":57},"9":{"0":3,"1":2},"a":{"0":2,"1":42},"b":{"0":1,"1":31},"c":{"0":1,"1":22},"d":{"0":3,"1":7},"e":{"0":3,"1":17},"f":{"0":2,"1":33},"g":{"0":2,"1":25},"h":{"0":2,"1":23},"i":{"0":2,"1":30,"2":20},"j":{"0":2,"1":43},"k":{"0":2,"1":35},"l":{"0":4,"1":1},"m":{"0":2,"1":12},"n":{"0":3,"1":2},"o":{"0":2,"1":33}},"averageFieldLength":{"0":2.6799999999999993,"1":22.12,"2":1.0526315789473684},"storedFields":{}} \ No newline at end of file diff --git a/v6/assets/content_pages_searchIndexes.en.4b3e849b.json b/v6/assets/content_pages_searchIndexes.en.4b3e849b.json new file mode 100644 index 000000000..b1c1cd430 --- /dev/null +++ b/v6/assets/content_pages_searchIndexes.en.4b3e849b.json @@ -0,0 +1 @@ +{"index":{"_tree":{"4":{"":{"1":{"df":1,"ds":{"n":1}}}},"16":{"":{"1":{"df":1,"ds":{"n":1}}}},"query":{"":{"0":{"df":1,"ds":{"0":1}},"1":{"df":2,"ds":{"c":2,"l":1}}}},"c":{"ustom":{"ize":{"":{"0":{"df":1,"ds":{"1":1}}}},"":{"1":{"df":4,"ds":{"1":3,"i":1,"l":1,"m":1}}}},"reate":{"mongoability":{"":{"1":{"df":1,"ds":{"4":2}}}},"aliasresolver":{"":{"1":{"df":1,"ds":{"4":1}}}}},"a":{"sl":{"":{"0":{"df":8,"ds":{"4":1,"5":1,"j":1,"k":1,"l":1,"m":1,"n":1,"o":1}},"1":{"df":9,"ds":{"c":1,"g":1,"i":1,"j":1,"k":1,"l":1,"m":1,"n":1,"o":1}},"2":{"df":1,"ds":{"l":1}}}},"che":{"":{"0":{"df":1,"ds":{"6":1}},"1":{"df":1,"ds":{"6":1}}}}},"la":{"im":{"":{"0":{"df":1,"ds":{"7":1}}}},"ss":{"es":{"":{"1":{"df":2,"ds":{"3":1,"i":1}}}},"":{"1":{"df":1,"ds":{"e":1}}}}},"o":{"n":{"ditions":{"":{"0":{"df":1,"ds":{"c":1}},"1":{"df":3,"ds":{"1":2,"c":1,"g":1}},"2":{"df":1,"ds":{"l":1}}}},"tributions":{"":{"1":{"df":1,"ds":{"8":1}}}},"clusion":{"":{"1":{"df":2,"ds":{"a":1,"b":1}}}},"f":{"using":{"":{"0":{"df":1,"ds":{"9":1}}}},"igure":{"":{"1":{"df":1,"ds":{"j":1}}}}},"s":{"tructor":{"":{"1":{"df":1,"ds":{"4":2}}}},"iderations":{"":{"1":{"df":1,"ds":{"j":1}}}}},"verter":{"":{"1":{"df":1,"ds":{"m":1}}}}},"okbook":{"":{"0":{"df":1,"ds":{"8":1}},"1":{"df":1,"ds":{"8":2}}}},"m":{"mon":{"":{"1":{"df":1,"ds":{"c":1}}}},"po":{"nent":{"":{"1":{"df":2,"ds":{"n":1,"o":2}}}},"sition":{"":{"1":{"df":1,"ds":{"o":1}}}}}}},"dn":{"":{"1":{"df":1,"ds":{"f":1}}}},"sp":{"":{"1":{"df":1,"ds":{"f":1}}}},"heck":{"ing":{"":{"1":{"df":2,"ds":{"c":1,"g":1}}}},"":{"1":{"df":2,"ds":{"j":2,"m":1}}}}},"d":{"atabase":{"":{"0":{"df":1,"ds":{"0":1}}}},"e":{"bugging":{"":{"0":{"df":1,"ds":{"2":1}},"1":{"df":1,"ds":{"2":1}}}},"mo":{"":{"1":{"df":4,"ds":{"6":1,"8":1,"a":1,"b":1}}}},"p":{"recated":{"":{"1":{"df":1,"ds":{"4":1}}}},"th":{"":{"0":{"df":1,"ds":{"c":1}}}}},"fine":{"ability":{"":{"1":{"df":2,"ds":{"4":1,"e":4}}}},"":{"0":{"df":2,"ds":{"d":1,"e":1}}}},"v":{"":{"1":{"df":1,"ds":{"f":1}}}},"tect":{"subjecttype":{"":{"1":{"df":1,"ds":{"4":2}}}},"ion":{"":{"0":{"df":1,"ds":{"i":1}},"1":{"df":1,"ds":{"i":1}}}},"":{"1":{"df":1,"ds":{"i":1}}}}},"o":{"t":{"":{"1":{"df":1,"ds":{"3":1}}}},"wnload":{"":{"1":{"df":1,"ds":{"f":1}}}}},"irective":{"":{"1":{"df":1,"ds":{"j":1}}}}},"t":{"ype":{"s":{"cript":{"":{"0":{"df":1,"ds":{"3":1}},"1":{"df":6,"ds":{"j":1,"k":2,"l":1,"m":1,"n":2,"o":1}}}},"":{"1":{"df":3,"ds":{"3":1,"i":1,"o":1}}}},"":{"0":{"df":1,"ds":{"i":1}},"1":{"df":2,"ds":{"3":2,"i":2}}}},"hrowunlesscan":{"":{"1":{"df":1,"ds":{"4":1}}}},"oken":{"":{"1":{"df":1,"ds":{"6":1}}}},"a":{"g":{"":{"1":{"df":1,"ds":{"f":1}}}},"ble":{"":{"1":{"df":1,"ds":{"h":1}}}}},"e":{"mplates":{"":{"1":{"df":2,"ds":{"j":2,"m":1}}}},"st":{"ing":{"":{"0":{"df":1,"ds":{"2":1}},"1":{"df":1,"ds":{"2":1}}}},"":{"2":{"df":1,"ds":{"l":1}}}}}},"i":{"n":{"fer":{"ence":{"":{"1":{"df":1,"ds":{"3":3}}}},"":{"1":{"df":1,"ds":{"3":1}}}},"t":{"roduction":{"":{"0":{"df":2,"ds":{"8":1,"g":1}}}},"er":{"faces":{"":{"1":{"df":1,"ds":{"3":1}}}},"preter":{"":{"1":{"df":1,"ds":{"l":1}}}}}},"cluded":{"":{"1":{"df":1,"ds":{"c":1}}}},"v":{"alid":{"":{"1":{"df":1,"ds":{"d":1}}}},"erted":{"":{"1":{"df":2,"ds":{"e":1,"g":1}}}}},"sta":{"llation":{"":{"0":{"df":1,"ds":{"f":1}},"1":{"df":6,"ds":{"j":1,"k":1,"l":1,"m":1,"n":1,"o":1}}}},"nce":{"":{"1":{"df":4,"ds":{"j":1,"m":1,"n":3,"o":1}}}}}},"ssue":{"":{"1":{"df":6,"ds":{"6":1,"7":1,"8":1,"9":1,"a":1,"b":1}}}},"tem":{"s":{"":{"1":{"df":1,"ds":{"c":2}}}},"":{"1":{"df":1,"ds":{"c":1}}}},"mp":{"lementation":{"":{"1":{"df":1,"ds":{"1":1}}}},"erative":{"":{"1":{"df":1,"ds":{"n":1}}}}}},"s":{"u":{"pport":{"":{"0":{"df":1,"ds":{"3":1}},"1":{"df":6,"ds":{"j":1,"k":1,"l":1,"m":1,"n":1,"o":1}}},"ed":{"":{"1":{"df":1,"ds":{"c":1}}}}},"bject":{"":{"0":{"df":1,"ds":{"i":1}},"1":{"df":4,"ds":{"3":1,"4":1,"i":4,"l":1}}},"s":{"":{"1":{"df":1,"ds":{"l":1}}}}}},"afer":{"":{"1":{"df":1,"ds":{"3":1}}}},"olution":{"":{"1":{"df":6,"ds":{"6":1,"7":1,"8":1,"9":1,"a":1,"b":1}}}},"e":{"t":{"defaultmessage":{"":{"1":{"df":1,"ds":{"4":1}}}},"message":{"":{"1":{"df":1,"ds":{"4":1}}}}},"ssion":{"":{"1":{"df":1,"ds":{"6":1}}}},"rvices":{"":{"1":{"df":1,"ds":{"a":1}}}},"mantic":{"":{"1":{"df":1,"ds":{"f":1}}}}},"t":{"orage":{"":{"1":{"df":1,"ds":{"6":1}}}},"a":{"tic":{"":{"1":{"df":1,"ds":{"4":2}}}},"rted":{"":{"1":{"df":3,"ds":{"g":1,"m":1,"o":1}}}}}},"hape":{"":{"1":{"df":1,"ds":{"e":1}}}},"c":{"alar":{"":{"1":{"df":1,"ds":{"c":1}}}},"ript":{"":{"1":{"df":1,"ds":{"f":1}}}}}},"a":{"p":{"i":{"":{"0":{"df":3,"ds":{"4":1,"5":1,"9":1}},"1":{"df":1,"ds":{"o":2}}}},"p":{"lication":{"":{"1":{"df":1,"ds":{"3":1}}}},"module":{"":{"1":{"df":1,"ds":{"j":1}}}}}},"bilit":{"y":{"":{"0":{"df":4,"ds":{"0":1,"1":1,"4":1,"5":1}},"1":{"df":6,"ds":{"3":1,"4":1,"j":1,"m":1,"n":3,"o":2}}},"builder":{"":{"1":{"df":3,"ds":{"3":1,"4":5,"e":3}}}},"optionsof":{"":{"1":{"df":1,"ds":{"3":1}}}},"service":{"":{"1":{"df":1,"ds":{"j":1}}}}},"ies":{"":{"0":{"df":1,"ds":{"6":1}},"1":{"df":1,"ds":{"b":1}}}}},"void":{"":{"1":{"df":5,"ds":{"6":1,"7":1,"8":1,"9":1,"a":1}}}},"":{"1":{"df":2,"ds":{"c":2,"n":1}}},"rray":{"":{"1":{"df":1,"ds":{"c":3}}}},"l":{"ternative":{"":{"1":{"df":4,"ds":{"6":1,"8":1,"a":1,"b":1}}}},"iases":{"":{"0":{"df":1,"ds":{"d":1}},"1":{"df":2,"ds":{"n":1,"o":1}}}}},"c":{"tion":{"":{"0":{"df":1,"ds":{"d":1}}}},"cess":{"":{"0":{"df":1,"ds":{"h":1}},"1":{"df":1,"ds":{"n":1}}},"ible":{"by":{"":{"1":{"df":1,"ds":{"k":2}}}},"":{"1":{"df":2,"ds":{"k":2,"l":1}},"2":{"df":1,"ds":{"l":1}}}}}},"n":{"y":{"ability":{"":{"1":{"df":1,"ds":{"3":1}}}},"mongoability":{"":{"1":{"df":1,"ds":{"3":1}}}}},"gular":{"":{"0":{"df":1,"ds":{"j":1}},"1":{"df":1,"ds":{"j":1}}}}},"dapter":{"":{"1":{"df":1,"ds":{"k":1}}}},"u":{"thorization":{"":{"0":{"df":1,"ds":{"7":1}},"2":{"df":1,"ds":{"l":1}}}},"relia":{"":{"0":{"df":1,"ds":{"m":1}},"1":{"df":1,"ds":{"m":1}}}},"gment":{"":{"1":{"df":1,"ds":{"o":1}}}}},"ttribute":{"":{"1":{"df":1,"ds":{"m":1}}}}},"n":{"ested":{"":{"1":{"df":3,"ds":{"3":1,"c":2,"h":1}}}},"pm":{"":{"1":{"df":1,"ds":{"f":1}}}},"ot":{"ation":{"":{"1":{"df":1,"ds":{"3":1}}}},"e":{"":{"1":{"df":2,"ds":{"l":2,"n":1}}}}},"ames":{"":{"1":{"df":2,"ds":{"n":1,"o":1}}}}},"r":{"oles":{"":{"0":{"df":2,"ds":{"a":1,"b":1}}}},"e":{"levantrulefor":{"":{"1":{"df":1,"ds":{"4":1}}}},"quirements":{"":{"1":{"df":1,"ds":{"f":1}}}},"a":{"sons":{"":{"1":{"df":1,"ds":{"g":1}}}},"dy":{"":{"1":{"df":1,"ds":{"g":1}}}},"ct":{"":{"0":{"df":1,"ds":{"n":1}},"1":{"df":1,"ds":{"n":2}}},"ive":{"":{"1":{"df":1,"ds":{"o":1}}}}}},"stricting":{"":{"0":{"df":1,"ds":{"h":1}}}},"co":{"mmended":{"":{"1":{"df":1,"ds":{"e":1}}}},"rd":{"s":{"":{"1":{"df":2,"ds":{"k":1,"l":1}}}},"":{"2":{"df":1,"ds":{"l":1}}}}}},"aw":{"rule":{"":{"1":{"df":1,"ds":{"3":1}}}},"":{"1":{"df":1,"ds":{"e":1}}}},"u":{"le":{"of":{"":{"1":{"df":1,"ds":{"3":1}}}},"s":{"for":{"":{"1":{"df":1,"ds":{"4":1}}}},"":{"0":{"df":1,"ds":{"e":1}},"1":{"df":3,"ds":{"4":2,"e":2,"g":2}}},"to":{"query":{"":{"1":{"df":1,"ds":{"5":1}}}},"ast":{"":{"1":{"df":1,"ds":{"5":1}}}},"fields":{"":{"1":{"df":1,"ds":{"5":1}}}}}},"":{"1":{"df":1,"ds":{"e":1}}}},"ntime":{"":{"1":{"df":1,"ds":{"l":1}},"2":{"df":1,"ds":{"l":1}}}}}},"m":{"emory":{"":{"1":{"df":1,"ds":{"6":1}}}},"o":{"ngo":{"query":{"":{"1":{"df":1,"ds":{"3":1}}},"matcher":{"":{"1":{"df":1,"ds":{"4":1}}}}},"db":{"":{"1":{"df":2,"ds":{"c":1,"k":1}}}},"ose":{"":{"0":{"df":1,"ds":{"k":1}},"1":{"df":1,"ds":{"k":3}}}}},"del":{"":{"1":{"df":1,"ds":{"l":1}}}}},"a":{"tch":{"er":{"":{"1":{"df":1,"ds":{"1":2}}}},"":{"1":{"df":1,"ds":{"c":5}}}},"nagement":{"":{"2":{"df":1,"ds":{"l":1}}}}}},"f":{"or":{"cedsubject":{"":{"1":{"df":1,"ds":{"3":1}}}},"bidden":{"error":{"":{"1":{"df":1,"ds":{"4":1}}}},"":{"1":{"df":1,"ds":{"g":1}}}}},"unction":{"":{"1":{"df":1,"ds":{"e":1}}}},"i":{"eld":{"":{"1":{"df":2,"ds":{"1":1,"h":2}}},"s":{"":{"0":{"df":1,"ds":{"h":1}},"1":{"df":4,"ds":{"3":1,"g":1,"h":1,"k":1}}}},"patternmatcher":{"":{"1":{"df":1,"ds":{"4":1}}}}},"nding":{"":{"1":{"df":1,"ds":{"l":1}}}}}},"p":{"ossiblerulesfor":{"":{"1":{"df":1,"ds":{"4":1}}}},"a":{"yload":{"":{"1":{"df":1,"ds":{"6":1}}}},"ck":{"rules":{"":{"1":{"df":1,"ds":{"5":1}}}},"ages":{"":{"1":{"df":1,"ds":{"f":2}}}}},"rty":{"":{"1":{"df":1,"ds":{"f":1}}}},"t":{"terns":{"":{"1":{"df":3,"ds":{"a":1,"b":1,"h":2}}}},"h":{"":{"1":{"df":1,"ds":{"l":1}}}}}},"er":{"mi":{"ttedfieldsof":{"":{"1":{"df":1,"ds":{"5":1}}}},"ssion":{"s":{"":{"0":{"df":2,"ds":{"a":1,"b":1}},"1":{"df":3,"ds":{"3":2,"j":2,"m":1}},"2":{"df":1,"ds":{"l":1}}}},"":{"2":{"df":1,"ds":{"l":1}}}}},"sisted":{"":{"0":{"df":1,"ds":{"a":1}}}},"formance":{"":{"1":{"df":1,"ds":{"j":1}}}}},"u":{"reability":{"":{"1":{"df":1,"ds":{"4":5}}}},"tting":{"":{"1":{"df":2,"ds":{"a":1,"b":1}}}}},"r":{"edefined":{"":{"0":{"df":1,"ds":{"b":1}}}},"actice":{"":{"1":{"df":1,"ds":{"e":1}}}},"isma":{"":{"0":{"df":1,"ds":{"l":1}},"1":{"df":1,"ds":{"l":2}},"2":{"df":1,"ds":{"l":2}}},"query":{"":{"1":{"df":1,"ds":{"l":1}}}},"client":{"":{"1":{"df":1,"ds":{"l":1}}}}},"o":{"pert":{"y":{"":{"1":{"df":4,"ds":{"4":2,"c":5,"n":1,"o":1}}}},"ies":{"":{"1":{"df":1,"ds":{"c":1}}}}},"videability":{"":{"1":{"df":1,"ds":{"o":1}}}}}},"npm":{"":{"1":{"df":1,"ds":{"f":1}}}},"ipe":{"":{"1":{"df":1,"ds":{"j":2}}}},"lugin":{"":{"1":{"df":2,"ds":{"k":2,"o":1}}}}},"u":{"pdate":{"":{"1":{"df":6,"ds":{"4":1,"g":1,"j":1,"m":1,"n":1,"o":1}}}},"npackrules":{"":{"1":{"df":1,"ds":{"5":1}}}},"s":{"age":{"":{"1":{"df":4,"ds":{"d":1,"k":1,"l":1,"n":2}}}},"eability":{"":{"1":{"df":1,"ds":{"n":1}}}}}},"b":{"uild":{"":{"1":{"df":2,"ds":{"4":1,"f":1}}},"mongoquerymatcher":{"":{"1":{"df":1,"ds":{"4":1}}}},"s":{"":{"1":{"df":1,"ds":{"f":1}}}}},"as":{"ed":{"":{"0":{"df":1,"ds":{"7":1}}}},"ics":{"":{"1":{"df":1,"ds":{"g":1}}}}},"ind":{"":{"1":{"df":1,"ds":{"n":1}}}}},"g":{"etdefaulterrormessage":{"":{"1":{"df":1,"ds":{"4":1}}}},"uide":{"":{"1":{"df":1,"ds":{"8":1}}}},"t":{"":{"1":{"df":1,"ds":{"f":1}}}}},"l":{"ru":{"":{"1":{"df":1,"ds":{"6":1}}}},"anguage":{"":{"1":{"df":1,"ds":{"c":1}}}},"ogic":{"al":{"":{"1":{"df":1,"ds":{"c":1}}}},"":{"1":{"df":2,"ds":{"c":1,"g":1}}}},"t":{"":{"1":{"df":2,"ds":{"f":1,"n":1}}}},"i":{"cense":{"":{"1":{"df":6,"ds":{"j":1,"k":1,"l":1,"m":1,"n":1,"o":1}}}},"brary":{"":{"2":{"df":1,"ds":{"l":1}}}}}},"j":{"wt":{"":{"1":{"df":1,"ds":{"6":1}}}},"son":{"":{"1":{"df":1,"ds":{"e":3}}}}},"o":{"bjects":{"":{"1":{"df":1,"ds":{"e":3}}}},"rder":{"":{"1":{"df":1,"ds":{"e":1}}}},"fficial":{"":{"1":{"df":1,"ds":{"f":1}}}},"utput":{"":{"1":{"df":1,"ds":{"l":1}}}},"p":{"erators":{"":{"1":{"df":2,"ds":{"1":1,"c":2}}}},"tions":{"":{"1":{"df":1,"ds":{"o":1}}}}}},"3rd":{"":{"1":{"df":1,"ds":{"f":1}}}},"yarn":{"":{"1":{"df":1,"ds":{"f":1}}}},"w":{"ays":{"":{"1":{"df":2,"ds":{"6":1,"8":1}}}},"ebpack":{"":{"1":{"df":1,"ds":{"f":1}}}}},"e":{"x":{"t":{"end":{"":{"1":{"df":1,"ds":{"1":1}}}},"ra":{"":{"0":{"df":1,"ds":{"5":1}}}}},"planation":{"":{"1":{"df":1,"ds":{"f":1}}}}},"nvironments":{"":{"1":{"df":1,"ds":{"f":1}}}}},"h":{"elper":{"s":{"":{"1":{"df":1,"ds":{"3":1}}}},"":{"1":{"df":3,"ds":{"i":1,"k":1,"l":1}}}},"ook":{"s":{"":{"1":{"df":1,"ds":{"n":1}}}},"":{"1":{"df":1,"ds":{"o":1}}}}},"v":{"ersion":{"ing":{"":{"1":{"df":1,"ds":{"f":1}}}},"s":{"":{"1":{"df":1,"ds":{"f":1}}}}},"ue":{"":{"0":{"df":1,"ds":{"o":1}},"1":{"df":1,"ds":{"o":2}}}}}},"_prefix":""},"documentCount":25,"nextId":25,"documentIds":{"0":"advanced/ability-to-database-query","1":"advanced/customize-ability","2":"advanced/debugging-testing","3":"advanced/typescript","4":"api/casl-ability","5":"api/casl-ability-extra","6":"cookbook/cache-rules","7":"cookbook/claim-authorization","8":"cookbook/intro","9":"cookbook/less-confusing-can-api","a":"cookbook/roles-with-persisted-permissions","b":"cookbook/roles-with-static-permissions","c":"guide/conditions-in-depth","d":"guide/define-aliases","e":"guide/define-rules","f":"guide/install","g":"guide/intro","h":"guide/restricting-fields","i":"guide/subject-type-detection","j":"package/casl-angular","k":"package/casl-mongoose","l":"package/casl-prisma","m":"package/casl-aurelia","n":"package/casl-react","o":"package/casl-vue"},"fieldIds":{"title":0,"headings":1,"summary":2},"fieldLength":{"0":{"0":4,"1":1},"1":{"0":2,"1":12},"2":{"0":3,"1":2},"3":{"0":2,"1":33},"4":{"0":4,"1":53},"5":{"0":5,"1":6},"6":{"0":2,"1":21},"7":{"0":3,"1":7},"8":{"0":2,"1":19},"9":{"0":4,"1":7},"a":{"0":4,"1":14},"b":{"0":4,"1":11},"c":{"0":3,"1":57},"d":{"0":3,"1":2},"e":{"0":2,"1":42},"f":{"0":1,"1":31},"g":{"0":1,"1":22},"h":{"0":3,"1":7},"i":{"0":3,"1":17},"j":{"0":2,"1":33},"k":{"0":2,"1":26},"l":{"0":2,"1":30,"2":20},"m":{"0":2,"1":25},"n":{"0":2,"1":43},"o":{"0":2,"1":35}},"averageFieldLength":{"0":2.68,"1":22.24,"2":0.9090909090909091},"storedFields":{}} \ No newline at end of file diff --git a/v6/assets/content_pages_summaries.en.5c204f49.json b/v6/assets/content_pages_summaries.en.d03f4097.json similarity index 71% rename from v6/assets/content_pages_summaries.en.5c204f49.json rename to v6/assets/content_pages_summaries.en.d03f4097.json index 0758563a6..4cccfd345 100644 --- a/v6/assets/content_pages_summaries.en.5c204f49.json +++ b/v6/assets/content_pages_summaries.en.d03f4097.json @@ -1 +1 @@ -{"items":[{"id":"guide/install","title":"Installation","categories":["guide"],"headings":[{"id":"requirements","title":"Requirements"},{"id":"semantic-versioning","title":"Semantic Versioning"},{"id":"official-packages-and-its-versions","title":"Official packages and its versions"},{"id":"3rd-party-packages","title":"3rd party packages"},{"id":"npm-yarn-pnpm","title":"NPM, YARN, PNPM"},{"id":"cdn","title":"CDN"},{"id":"download-and-use-and-lt-script-and-gt-tag","title":"Download and use <script> tag"},{"id":"explanation-of-different-builds","title":"Explanation of Different Builds"},{"id":"webpack","title":"Webpack"},{"id":"csp-environments","title":"CSP environments"},{"id":"dev-build","title":"Dev build"}]},{"id":"api/casl-ability","title":"@casl/ability API","categories":["api"],"headings":[{"id":"pure-ability","title":"PureAbility"},{"id":"pure-ability-constructor","title":"PureAbility constructor"},{"id":"update","title":"update"},{"id":"can-of-pure-ability","title":"can of PureAbility"},{"id":"cannot-of-pure-ability","title":"cannot of PureAbility"},{"id":"relevant-rule-for","title":"relevantRuleFor"},{"id":"rules-for","title":"rulesFor"},{"id":"possible-rules-for","title":"possibleRulesFor"},{"id":"on","title":"on"},{"id":"rules-property-of-pure-ability","title":"rules property of PureAbility"},{"id":"detect-subject-type","title":"detectSubjectType"},{"id":"ability-deprecated-by-create-mongo-ability","title":"Ability (deprecated by createMongoAbility)"},{"id":"create-mongo-ability","title":"createMongoAbility"},{"id":"ability-builder","title":"AbilityBuilder"},{"id":"ability-builder-constructor","title":"AbilityBuilder constructor"},{"id":"can-of-ability-builder","title":"can of AbilityBuilder"},{"id":"cannot-of-ability-builder","title":"cannot of AbilityBuilder"},{"id":"build","title":"build"},{"id":"rules-property-of-ability-builder","title":"rules property of AbilityBuilder"},{"id":"define-ability","title":"defineAbility"},{"id":"forbidden-error","title":"ForbiddenError"},{"id":"static-from","title":"static from"},{"id":"static-set-default-message","title":"static setDefaultMessage"},{"id":"set-message","title":"setMessage"},{"id":"throw-unless-can","title":"throwUnlessCan"},{"id":"get-default-error-message","title":"getDefaultErrorMessage"},{"id":"field-pattern-matcher","title":"fieldPatternMatcher"},{"id":"mongo-query-matcher","title":"mongoQueryMatcher"},{"id":"build-mongo-query-matcher","title":"buildMongoQueryMatcher"},{"id":"create-alias-resolver","title":"createAliasResolver"},{"id":"detect-subject-type","title":"detectSubjectType"},{"id":"subject","title":"subject"}]},{"id":"cookbook/intro","title":"Cookbook Introduction","categories":["cookbook"],"headings":[{"id":"the-cookbook-vs-the-guide","title":"The Cookbook vs the Guide"},{"id":"cookbook-contributions","title":"Cookbook Contributions"},{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"demo","title":"Demo"},{"id":"when-to-avoid","title":"When To Avoid"},{"id":"alternative-ways","title":"Alternative Ways"},{"id":"thank-you","title":"Thank you"}]},{"id":"guide/intro","title":"Introduction","categories":["guide"],"headings":[{"id":"what-is-casl","title":"What is CASL?"},{"id":"getting-started","title":"Getting Started"},{"id":"basics","title":"Basics"},{"id":"conditions","title":"Conditions"},{"id":"fields","title":"Fields"},{"id":"checking-logic","title":"Checking logic"},{"id":"inverted-rules","title":"Inverted rules"},{"id":"forbidden-reasons","title":"Forbidden reasons"},{"id":"update-rules","title":"Update rules"},{"id":"what-else","title":"What else?"},{"id":"ready-for-more","title":"Ready for More?"}]},{"id":"api/casl-ability-extra","title":"@casl/ability/extra API","categories":["api"],"headings":[{"id":"rules-to-query","title":"rulesToQuery"},{"id":"rules-to-ast","title":"rulesToAST"},{"id":"rules-to-fields","title":"rulesToFields"},{"id":"permitted-fields-of","title":"permittedFieldsOf"},{"id":"pack-rules","title":"packRules"},{"id":"unpack-rules","title":"unpackRules"}]},{"id":"cookbook/less-confusing-can-api","title":"Less confusing can API","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"when-to-avoid","title":"When to avoid"}]},{"id":"cookbook/claim-authorization","title":"Claim based Authorization","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"when-to-avoid","title":"When To Avoid"}]},{"id":"cookbook/cache-rules","title":"Cache abilities","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"demo","title":"Demo"},{"id":"in-memory-lru-cache","title":"In memory LRU cache"},{"id":"in-session-storage","title":"In session storage"},{"id":"in-jwt-token-payload","title":"In JWT token payload"},{"id":"when-to-avoid","title":"When to avoid"},{"id":"alternative-ways","title":"Alternative ways"}]},{"id":"cookbook/roles-with-static-permissions","title":"Roles with predefined permissions","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"demo","title":"Demo"},{"id":"abilities","title":"Abilities"},{"id":"putting-together","title":"Putting together"},{"id":"conclusion","title":"Conclusion"},{"id":"alternative-patterns","title":"Alternative patterns"}]},{"id":"guide/define-rules","title":"Define Rules","categories":["guide"],"headings":[{"id":"define-ability-function","title":"defineAbility function"},{"id":"define-ability-example","title":"defineAbility example"},{"id":"when-to-use-define-ability","title":"When to use defineAbility"},{"id":"why-define-ability-is-not-recommended","title":"Why defineAbility is not recommended"},{"id":"ability-builder-class","title":"AbilityBuilder class"},{"id":"ability-builder-example","title":"AbilityBuilder example"},{"id":"when-to-use-ability-builder","title":"When to use AbilityBuilder"},{"id":"json-objects","title":"JSON objects"},{"id":"json-objects-example","title":"JSON objects example"},{"id":"the-shape-of-raw-rule","title":"The shape of raw rule"},{"id":"when-to-use-json-objects","title":"When to use JSON objects"},{"id":"rules","title":"Rules"},{"id":"inverted-rules-order","title":"Inverted rules order"},{"id":"best-practice","title":"Best practice"}]},{"id":"cookbook/roles-with-persisted-permissions","title":"Roles with persisted permissions","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"demo","title":"Demo"},{"id":"services","title":"Services"},{"id":"putting-together","title":"Putting together"},{"id":"conclusion","title":"Conclusion"},{"id":"when-to-avoid","title":"When to avoid"},{"id":"alternative-patterns","title":"Alternative patterns"}]},{"id":"guide/conditions-in-depth","title":"Conditions in Depth","categories":["guide"],"headings":[{"id":"mongo-db-and-its-query-language","title":"MongoDB and its query language"},{"id":"supported-operators","title":"Supported operators"},{"id":"why-logical-query-operators-are-not-included","title":"Why logical query operators are not included"},{"id":"checking-logic-in-casl","title":"Checking logic in CASL"},{"id":"common-conditions","title":"Common conditions"},{"id":"match-one-of-few-items-in-a-scalar-property","title":"Match one of few items in a scalar property"},{"id":"match-specified-item-in-an-array-property","title":"Match specified item in an array property"},{"id":"match-one-of-few-items-in-an-array-property","title":"Match one of few items in an array property"},{"id":"match-nested-property-value","title":"Match nested property value"},{"id":"match-several-properties-of-a-nested-array-property","title":"Match several properties of a nested array property"}]},{"id":"guide/restricting-fields","title":"Restricting fields access","categories":["guide"],"headings":[{"id":"nested-fields","title":"Nested fields"},{"id":"field-patterns","title":"Field patterns"},{"id":"field-patterns-table","title":"Field patterns table"}]},{"id":"guide/subject-type-detection","title":"Subject type detection","categories":["guide"],"headings":[{"id":"how-does-casl-detect-subject-type","title":"How does CASL detect subject type?"},{"id":"subject-helper","title":"subject helper"},{"id":"custom-subject-type-detection","title":"Custom subject type detection"},{"id":"use-classes-as-subject-types","title":"Use classes as subject types"}]},{"id":"guide/define-aliases","title":"Define Action Aliases","categories":["guide"],"headings":[{"id":"invalid-usage","title":"Invalid usage"}]},{"id":"advanced/typescript","title":"TypeScript Support","categories":["advanced"],"headings":[{"id":"permissions-inference","title":"Permissions inference"},{"id":"infer-subject-types-from-interfaces-and-classes","title":"Infer subject types from interfaces and classes"},{"id":"safer-permissions-inference","title":"Safer permissions inference"},{"id":"application-ability","title":"Application Ability"},{"id":"ability-builder-type-inference","title":"AbilityBuilder type inference"},{"id":"nested-fields-with-dot-notation","title":"Nested fields with dot notation"},{"id":"useful-type-helpers","title":"Useful type helpers"},{"id":"raw-rule","title":"RawRule"},{"id":"rule-of","title":"RuleOf"},{"id":"ability-options-of","title":"AbilityOptionsOf"},{"id":"any-ability-and-any-mongo-ability","title":"AnyAbility and AnyMongoAbility"},{"id":"mongo-query","title":"MongoQuery"},{"id":"forced-subject","title":"ForcedSubject"}]},{"id":"advanced/customize-ability","title":"Customize Ability","categories":["advanced"],"headings":[{"id":"extend-conditions-with-custom-operators","title":"Extend conditions with custom operators"},{"id":"custom-conditions-matcher-implementation","title":"Custom conditions matcher implementation"},{"id":"custom-field-matcher","title":"Custom field matcher"}]},{"id":"advanced/debugging-testing","title":"Debugging and testing","categories":["advanced"],"headings":[{"id":"debugging","title":"Debugging"},{"id":"testing","title":"Testing"}]},{"id":"advanced/ability-to-database-query","title":"Ability to database query","categories":["advanced"],"headings":[]},{"id":"package/casl-prisma","title":"CASL Prisma","categories":["package"],"headings":[{"id":"casl-prisma","title":"CASL Prisma"},{"id":"installation","title":"Installation"},{"id":"usage","title":"Usage"},{"id":"note-on-subject-helper","title":"Note on subject helper"},{"id":"note-on-prisma-query-runtime-interpreter","title":"Note on Prisma Query runtime interpreter"},{"id":"finding-accessible-records","title":"Finding Accessible Records"},{"id":"type-script-support","title":"TypeScript support"},{"id":"prisma-query","title":"PrismaQuery"},{"id":"model","title":"Model"},{"id":"subjects","title":"Subjects"},{"id":"custom-prisma-client-output-path","title":"Custom PrismaClient output path"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-mongoose","title":"CASL Mongoose","categories":["package"],"headings":[{"id":"casl-mongoose","title":"CASL Mongoose"},{"id":"installation","title":"Installation"},{"id":"integration-with-mongoose","title":"Integration with mongoose"},{"id":"accessible-records-plugin","title":"Accessible Records plugin"},{"id":"accessible-fields-plugin","title":"Accessible Fields plugin"},{"id":"integration-with-other-mongo-db-libraries","title":"Integration with other MongoDB libraries"},{"id":"type-script-support","title":"TypeScript support"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-angular","title":"CASL Angular","categories":["package"],"headings":[{"id":"casl-angular","title":"CASL Angular"},{"id":"installation","title":"Installation"},{"id":"configure-app-module","title":"Configure AppModule"},{"id":"update-ability-instance","title":"Update Ability instance"},{"id":"check-permissions-in-templates-using-ability-service","title":"Check permissions in templates using AbilityService"},{"id":"check-permissions-in-templates-using-pipe","title":"Check permissions in templates using pipe"},{"id":"why-pipe-and-not-directive","title":"Why pipe and not directive?"},{"id":"performance-considerations","title":"Performance considerations"},{"id":"type-script-support","title":"TypeScript support"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-react","title":"CASL React","categories":["package"],"headings":[{"id":"casl-react","title":"CASL React"},{"id":"installation","title":"Installation"},{"id":"can-component","title":"Can component"},{"id":"bind-can-to-a-particular-ability-instance","title":"Bind Can to a particular Ability instance"},{"id":"imperative-access-to-ability-instance","title":"Imperative access to Ability instance"},{"id":"usage-note-on-react-16-4-with-type-script","title":"Usage note on React < 16.4 with TypeScript"},{"id":"property-names-and-aliases","title":"Property names and aliases"},{"id":"type-script-support","title":"TypeScript support"},{"id":"update-ability-instance","title":"Update Ability instance"},{"id":"use-ability-usage-within-hooks","title":"useAbility usage within hooks"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-vue","title":"CASL Vue","categories":["package"],"headings":[{"id":"casl-vue","title":"CASL Vue"},{"id":"installation","title":"Installation"},{"id":"getting-started","title":"Getting started"},{"id":"the-plugin","title":"The plugin"},{"id":"provide-ability-hook","title":"provideAbility hook"},{"id":"can-component","title":"Can component"},{"id":"property-names-and-aliases","title":"Property names and aliases"},{"id":"component-vs-reactive-ability","title":"Component vs reactive Ability"},{"id":"type-script-support","title":"TypeScript support"},{"id":"augment-vue-types","title":"Augment Vue types"},{"id":"composition-api","title":"Composition API"},{"id":"options-api","title":"Options API"},{"id":"update-ability-instance","title":"Update Ability instance"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-aurelia","title":"CASL Aurelia","categories":["package"],"headings":[{"id":"casl-aurelia","title":"CASL Aurelia"},{"id":"installation","title":"Installation"},{"id":"getting-started","title":"Getting started"},{"id":"update-ability-instance","title":"Update Ability instance"},{"id":"check-permissions-in-templates","title":"Check permissions in templates"},{"id":"why-value-converter-and-not-custom-attribute","title":"Why value converter and not custom attribute?"},{"id":"type-script-support","title":"TypeScript support"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]}],"byId":{"guide/install":[0],"api/casl-ability":[1],"cookbook/intro":[2],"guide/intro":[3],"api/casl-ability-extra":[4],"cookbook/less-confusing-can-api":[5],"cookbook/claim-authorization":[6],"cookbook/cache-rules":[7],"cookbook/roles-with-static-permissions":[8],"guide/define-rules":[9],"cookbook/roles-with-persisted-permissions":[10],"guide/conditions-in-depth":[11],"guide/restricting-fields":[12],"guide/subject-type-detection":[13],"guide/define-aliases":[14],"advanced/typescript":[15],"advanced/customize-ability":[16],"advanced/debugging-testing":[17],"advanced/ability-to-database-query":[18],"package/casl-prisma":[19],"package/casl-mongoose":[20],"package/casl-angular":[21],"package/casl-react":[22],"package/casl-vue":[23],"package/casl-aurelia":[24]}} \ No newline at end of file +{"items":[{"id":"guide/install","title":"Installation","categories":["guide"],"headings":[{"id":"requirements","title":"Requirements"},{"id":"semantic-versioning","title":"Semantic Versioning"},{"id":"official-packages-and-its-versions","title":"Official packages and its versions"},{"id":"3rd-party-packages","title":"3rd party packages"},{"id":"npm-yarn-pnpm","title":"NPM, YARN, PNPM"},{"id":"cdn","title":"CDN"},{"id":"download-and-use-and-lt-script-and-gt-tag","title":"Download and use <script> tag"},{"id":"explanation-of-different-builds","title":"Explanation of Different Builds"},{"id":"webpack","title":"Webpack"},{"id":"csp-environments","title":"CSP environments"},{"id":"dev-build","title":"Dev build"}]},{"id":"api/casl-ability","title":"@casl/ability API","categories":["api"],"headings":[{"id":"pure-ability","title":"PureAbility"},{"id":"pure-ability-constructor","title":"PureAbility constructor"},{"id":"update","title":"update"},{"id":"can-of-pure-ability","title":"can of PureAbility"},{"id":"cannot-of-pure-ability","title":"cannot of PureAbility"},{"id":"relevant-rule-for","title":"relevantRuleFor"},{"id":"rules-for","title":"rulesFor"},{"id":"possible-rules-for","title":"possibleRulesFor"},{"id":"on","title":"on"},{"id":"rules-property-of-pure-ability","title":"rules property of PureAbility"},{"id":"detect-subject-type","title":"detectSubjectType"},{"id":"ability-deprecated-by-create-mongo-ability","title":"Ability (deprecated by createMongoAbility)"},{"id":"create-mongo-ability","title":"createMongoAbility"},{"id":"ability-builder","title":"AbilityBuilder"},{"id":"ability-builder-constructor","title":"AbilityBuilder constructor"},{"id":"can-of-ability-builder","title":"can of AbilityBuilder"},{"id":"cannot-of-ability-builder","title":"cannot of AbilityBuilder"},{"id":"build","title":"build"},{"id":"rules-property-of-ability-builder","title":"rules property of AbilityBuilder"},{"id":"define-ability","title":"defineAbility"},{"id":"forbidden-error","title":"ForbiddenError"},{"id":"static-from","title":"static from"},{"id":"static-set-default-message","title":"static setDefaultMessage"},{"id":"set-message","title":"setMessage"},{"id":"throw-unless-can","title":"throwUnlessCan"},{"id":"get-default-error-message","title":"getDefaultErrorMessage"},{"id":"field-pattern-matcher","title":"fieldPatternMatcher"},{"id":"mongo-query-matcher","title":"mongoQueryMatcher"},{"id":"build-mongo-query-matcher","title":"buildMongoQueryMatcher"},{"id":"create-alias-resolver","title":"createAliasResolver"},{"id":"detect-subject-type","title":"detectSubjectType"},{"id":"subject","title":"subject"}]},{"id":"cookbook/intro","title":"Cookbook Introduction","categories":["cookbook"],"headings":[{"id":"the-cookbook-vs-the-guide","title":"The Cookbook vs the Guide"},{"id":"cookbook-contributions","title":"Cookbook Contributions"},{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"demo","title":"Demo"},{"id":"when-to-avoid","title":"When To Avoid"},{"id":"alternative-ways","title":"Alternative Ways"},{"id":"thank-you","title":"Thank you"}]},{"id":"guide/intro","title":"Introduction","categories":["guide"],"headings":[{"id":"what-is-casl","title":"What is CASL?"},{"id":"getting-started","title":"Getting Started"},{"id":"basics","title":"Basics"},{"id":"conditions","title":"Conditions"},{"id":"fields","title":"Fields"},{"id":"checking-logic","title":"Checking logic"},{"id":"inverted-rules","title":"Inverted rules"},{"id":"forbidden-reasons","title":"Forbidden reasons"},{"id":"update-rules","title":"Update rules"},{"id":"what-else","title":"What else?"},{"id":"ready-for-more","title":"Ready for More?"}]},{"id":"api/casl-ability-extra","title":"@casl/ability/extra API","categories":["api"],"headings":[{"id":"rules-to-query","title":"rulesToQuery"},{"id":"rules-to-ast","title":"rulesToAST"},{"id":"rules-to-fields","title":"rulesToFields"},{"id":"permitted-fields-of","title":"permittedFieldsOf"},{"id":"pack-rules","title":"packRules"},{"id":"unpack-rules","title":"unpackRules"}]},{"id":"cookbook/less-confusing-can-api","title":"Less confusing can API","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"when-to-avoid","title":"When to avoid"}]},{"id":"cookbook/claim-authorization","title":"Claim based Authorization","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"when-to-avoid","title":"When To Avoid"}]},{"id":"cookbook/cache-rules","title":"Cache abilities","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"demo","title":"Demo"},{"id":"in-memory-lru-cache","title":"In memory LRU cache"},{"id":"in-session-storage","title":"In session storage"},{"id":"in-jwt-token-payload","title":"In JWT token payload"},{"id":"when-to-avoid","title":"When to avoid"},{"id":"alternative-ways","title":"Alternative ways"}]},{"id":"cookbook/roles-with-static-permissions","title":"Roles with predefined permissions","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"demo","title":"Demo"},{"id":"abilities","title":"Abilities"},{"id":"putting-together","title":"Putting together"},{"id":"conclusion","title":"Conclusion"},{"id":"alternative-patterns","title":"Alternative patterns"}]},{"id":"guide/define-rules","title":"Define Rules","categories":["guide"],"headings":[{"id":"define-ability-function","title":"defineAbility function"},{"id":"define-ability-example","title":"defineAbility example"},{"id":"when-to-use-define-ability","title":"When to use defineAbility"},{"id":"why-define-ability-is-not-recommended","title":"Why defineAbility is not recommended"},{"id":"ability-builder-class","title":"AbilityBuilder class"},{"id":"ability-builder-example","title":"AbilityBuilder example"},{"id":"when-to-use-ability-builder","title":"When to use AbilityBuilder"},{"id":"json-objects","title":"JSON objects"},{"id":"json-objects-example","title":"JSON objects example"},{"id":"the-shape-of-raw-rule","title":"The shape of raw rule"},{"id":"when-to-use-json-objects","title":"When to use JSON objects"},{"id":"rules","title":"Rules"},{"id":"inverted-rules-order","title":"Inverted rules order"},{"id":"best-practice","title":"Best practice"}]},{"id":"cookbook/roles-with-persisted-permissions","title":"Roles with persisted permissions","categories":["cookbook"],"headings":[{"id":"the-issue","title":"The issue"},{"id":"the-solution","title":"The solution"},{"id":"demo","title":"Demo"},{"id":"services","title":"Services"},{"id":"putting-together","title":"Putting together"},{"id":"conclusion","title":"Conclusion"},{"id":"when-to-avoid","title":"When to avoid"},{"id":"alternative-patterns","title":"Alternative patterns"}]},{"id":"guide/conditions-in-depth","title":"Conditions in Depth","categories":["guide"],"headings":[{"id":"mongo-db-and-its-query-language","title":"MongoDB and its query language"},{"id":"supported-operators","title":"Supported operators"},{"id":"why-logical-query-operators-are-not-included","title":"Why logical query operators are not included"},{"id":"checking-logic-in-casl","title":"Checking logic in CASL"},{"id":"common-conditions","title":"Common conditions"},{"id":"match-one-of-few-items-in-a-scalar-property","title":"Match one of few items in a scalar property"},{"id":"match-specified-item-in-an-array-property","title":"Match specified item in an array property"},{"id":"match-one-of-few-items-in-an-array-property","title":"Match one of few items in an array property"},{"id":"match-nested-property-value","title":"Match nested property value"},{"id":"match-several-properties-of-a-nested-array-property","title":"Match several properties of a nested array property"}]},{"id":"guide/restricting-fields","title":"Restricting fields access","categories":["guide"],"headings":[{"id":"nested-fields","title":"Nested fields"},{"id":"field-patterns","title":"Field patterns"},{"id":"field-patterns-table","title":"Field patterns table"}]},{"id":"guide/subject-type-detection","title":"Subject type detection","categories":["guide"],"headings":[{"id":"how-does-casl-detect-subject-type","title":"How does CASL detect subject type?"},{"id":"subject-helper","title":"subject helper"},{"id":"custom-subject-type-detection","title":"Custom subject type detection"},{"id":"use-classes-as-subject-types","title":"Use classes as subject types"}]},{"id":"guide/define-aliases","title":"Define Action Aliases","categories":["guide"],"headings":[{"id":"invalid-usage","title":"Invalid usage"}]},{"id":"advanced/typescript","title":"TypeScript Support","categories":["advanced"],"headings":[{"id":"permissions-inference","title":"Permissions inference"},{"id":"infer-subject-types-from-interfaces-and-classes","title":"Infer subject types from interfaces and classes"},{"id":"safer-permissions-inference","title":"Safer permissions inference"},{"id":"application-ability","title":"Application Ability"},{"id":"ability-builder-type-inference","title":"AbilityBuilder type inference"},{"id":"nested-fields-with-dot-notation","title":"Nested fields with dot notation"},{"id":"useful-type-helpers","title":"Useful type helpers"},{"id":"raw-rule","title":"RawRule"},{"id":"rule-of","title":"RuleOf"},{"id":"ability-options-of","title":"AbilityOptionsOf"},{"id":"any-ability-and-any-mongo-ability","title":"AnyAbility and AnyMongoAbility"},{"id":"mongo-query","title":"MongoQuery"},{"id":"forced-subject","title":"ForcedSubject"}]},{"id":"advanced/customize-ability","title":"Customize Ability","categories":["advanced"],"headings":[{"id":"extend-conditions-with-custom-operators","title":"Extend conditions with custom operators"},{"id":"custom-conditions-matcher-implementation","title":"Custom conditions matcher implementation"},{"id":"custom-field-matcher","title":"Custom field matcher"}]},{"id":"advanced/debugging-testing","title":"Debugging and testing","categories":["advanced"],"headings":[{"id":"debugging","title":"Debugging"},{"id":"testing","title":"Testing"}]},{"id":"advanced/ability-to-database-query","title":"Ability to database query","categories":["advanced"],"headings":[]},{"id":"package/casl-prisma","title":"CASL Prisma","categories":["package"],"headings":[{"id":"casl-prisma","title":"CASL Prisma"},{"id":"installation","title":"Installation"},{"id":"usage","title":"Usage"},{"id":"note-on-subject-helper","title":"Note on subject helper"},{"id":"note-on-prisma-query-runtime-interpreter","title":"Note on Prisma Query runtime interpreter"},{"id":"finding-accessible-records","title":"Finding Accessible Records"},{"id":"type-script-support","title":"TypeScript support"},{"id":"prisma-query","title":"PrismaQuery"},{"id":"model","title":"Model"},{"id":"subjects","title":"Subjects"},{"id":"custom-prisma-client-output-path","title":"Custom PrismaClient output path"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-mongoose","title":"CASL Mongoose","categories":["package"],"headings":[{"id":"casl-mongoose","title":"CASL Mongoose"},{"id":"installation","title":"Installation"},{"id":"usage","title":"Usage"},{"id":"accessible-by-helper","title":"accessibleBy helper"},{"id":"mongo-db-adapter","title":"MongoDB adapter"},{"id":"mongoose","title":"Mongoose"},{"id":"accessible-by-in-type-script","title":"accessibleBy in TypeScript"},{"id":"accessible-records-plugin","title":"Accessible Records plugin"},{"id":"accessible-fields-plugin","title":"Accessible Fields plugin"},{"id":"type-script-support-in-mongoose","title":"TypeScript support in mongoose"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-angular","title":"CASL Angular","categories":["package"],"headings":[{"id":"casl-angular","title":"CASL Angular"},{"id":"installation","title":"Installation"},{"id":"configure-app-module","title":"Configure AppModule"},{"id":"update-ability-instance","title":"Update Ability instance"},{"id":"check-permissions-in-templates-using-ability-service","title":"Check permissions in templates using AbilityService"},{"id":"check-permissions-in-templates-using-pipe","title":"Check permissions in templates using pipe"},{"id":"why-pipe-and-not-directive","title":"Why pipe and not directive?"},{"id":"performance-considerations","title":"Performance considerations"},{"id":"type-script-support","title":"TypeScript support"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-react","title":"CASL React","categories":["package"],"headings":[{"id":"casl-react","title":"CASL React"},{"id":"installation","title":"Installation"},{"id":"can-component","title":"Can component"},{"id":"bind-can-to-a-particular-ability-instance","title":"Bind Can to a particular Ability instance"},{"id":"imperative-access-to-ability-instance","title":"Imperative access to Ability instance"},{"id":"usage-note-on-react-16-4-with-type-script","title":"Usage note on React < 16.4 with TypeScript"},{"id":"property-names-and-aliases","title":"Property names and aliases"},{"id":"type-script-support","title":"TypeScript support"},{"id":"update-ability-instance","title":"Update Ability instance"},{"id":"use-ability-usage-within-hooks","title":"useAbility usage within hooks"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-vue","title":"CASL Vue","categories":["package"],"headings":[{"id":"casl-vue","title":"CASL Vue"},{"id":"installation","title":"Installation"},{"id":"getting-started","title":"Getting started"},{"id":"the-plugin","title":"The plugin"},{"id":"provide-ability-hook","title":"provideAbility hook"},{"id":"can-component","title":"Can component"},{"id":"property-names-and-aliases","title":"Property names and aliases"},{"id":"component-vs-reactive-ability","title":"Component vs reactive Ability"},{"id":"type-script-support","title":"TypeScript support"},{"id":"augment-vue-types","title":"Augment Vue types"},{"id":"composition-api","title":"Composition API"},{"id":"options-api","title":"Options API"},{"id":"update-ability-instance","title":"Update Ability instance"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]},{"id":"package/casl-aurelia","title":"CASL Aurelia","categories":["package"],"headings":[{"id":"casl-aurelia","title":"CASL Aurelia"},{"id":"installation","title":"Installation"},{"id":"getting-started","title":"Getting started"},{"id":"update-ability-instance","title":"Update Ability instance"},{"id":"check-permissions-in-templates","title":"Check permissions in templates"},{"id":"why-value-converter-and-not-custom-attribute","title":"Why value converter and not custom attribute?"},{"id":"type-script-support","title":"TypeScript support"},{"id":"want-to-help","title":"Want to help?"},{"id":"license","title":"License"}]}],"byId":{"guide/install":[0],"api/casl-ability":[1],"cookbook/intro":[2],"guide/intro":[3],"api/casl-ability-extra":[4],"cookbook/less-confusing-can-api":[5],"cookbook/claim-authorization":[6],"cookbook/cache-rules":[7],"cookbook/roles-with-static-permissions":[8],"guide/define-rules":[9],"cookbook/roles-with-persisted-permissions":[10],"guide/conditions-in-depth":[11],"guide/restricting-fields":[12],"guide/subject-type-detection":[13],"guide/define-aliases":[14],"advanced/typescript":[15],"advanced/customize-ability":[16],"advanced/debugging-testing":[17],"advanced/ability-to-database-query":[18],"package/casl-prisma":[19],"package/casl-mongoose":[20],"package/casl-angular":[21],"package/casl-react":[22],"package/casl-vue":[23],"package/casl-aurelia":[24]}} \ No newline at end of file diff --git a/v6/bootstrap.8396b992.js b/v6/bootstrap.6cc06c45.js similarity index 98% rename from v6/bootstrap.8396b992.js rename to v6/bootstrap.6cc06c45.js index 635bdb3c0..514583da2 100644 --- a/v6/bootstrap.8396b992.js +++ b/v6/bootstrap.6cc06c45.js @@ -1,2 +1,2 @@ -var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},e=function(t){return t&&t.Math==Math&&t},n=e("object"==typeof globalThis&&globalThis)||e("object"==typeof window&&window)||e("object"==typeof self&&self)||e("object"==typeof t&&t)||function(){return this}()||Function("return this")(),i={},r=function(t){try{return!!t()}catch(t){return!0}},o=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),s={},a={}.propertyIsEnumerable,c=Object.getOwnPropertyDescriptor,u=c&&!a.call({1:2},1);s.f=u?function(t){var e=c(this,t);return!!e&&e.enumerable}:a;var l=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},h={}.toString,d=function(t){return h.call(t).slice(8,-1)},p=d,f="".split,g=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},m=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==p(t)?f.call(t,""):Object(t)}:Object,C=g,v=function(t){return m(C(t))},b=function(t){return"object"==typeof t?null!==t:"function"==typeof t},w=b,y=function(t,e){if(!w(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!w(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!w(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!w(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")},x=g,k=function(t){return Object(x(t))},A={}.hasOwnProperty,F=function(t,e){return A.call(k(t),e)},E=b,$=n.document,j=E($)&&E($.createElement),S=function(t){return j?$.createElement(t):{}},O=S,z=!o&&!r((function(){return 7!=Object.defineProperty(O("div"),"a",{get:function(){return 7}}).a})),M=o,D=s,T=l,L=v,_=y,N=F,B=z,I=Object.getOwnPropertyDescriptor;i.f=M?I:function(t,e){if(t=L(t),e=_(e,!0),B)try{return I(t,e)}catch(t){}if(N(t,e))return T(!D.f.call(t,e),t[e])};var q={},P=b,U=function(t){if(!P(t))throw TypeError(String(t)+" is not an object");return t},V=o,R=z,G=U,H=y,Z=Object.defineProperty;q.f=V?Z:function(t,e,n){if(G(t),e=H(e,!0),G(n),R)try{return Z(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t};var X=q,W=l,K=o?function(t,e,n){return X.f(t,e,W(1,n))}:function(t,e,n){return t[e]=n,t},Q={exports:{}},J=n,Y=K,tt=function(t,e){try{Y(J,t,e)}catch(n){J[t]=e}return e},et=tt,nt=n["A"]||et("__core-js_shared__",{}),it=nt,rt=Function.toString;"function"!=typeof it.inspectSource&&(it.inspectSource=function(t){return rt.call(t)});var ot=it.inspectSource,st=ot,at=n.WeakMap,ct="function"==typeof at&&/native code/.test(st(at)),ut={exports:{}},lt=nt;(ut.exports=function(t,e){return lt[t]||(lt[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.11.0",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"});var ht,dt,pt,ft=0,gt=Math.random(),mt=ut.exports,Ct=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++ft+gt).toString(36)},vt=mt("keys"),bt={},wt=ct,yt=b,xt=K,kt=F,At=nt,Ft=function(t){return vt[t]||(vt[t]=Ct(t))},Et=bt,$t=n.WeakMap;if(wt){var jt=At.state||(At.state=new $t),St=jt.get,Ot=jt.has,zt=jt.set;ht=function(t,e){if(Ot.call(jt,t))throw new TypeError("Object already initialized");return e.facade=t,zt.call(jt,t,e),e},dt=function(t){return St.call(jt,t)||{}},pt=function(t){return Ot.call(jt,t)}}else{var Mt=Ft("state");Et[Mt]=!0,ht=function(t,e){if(kt(t,Mt))throw new TypeError("Object already initialized");return e.facade=t,xt(t,Mt,e),e},dt=function(t){return kt(t,Mt)?t[Mt]:{}},pt=function(t){return kt(t,Mt)}}var Dt={set:ht,get:dt,has:pt,enforce:function(t){return pt(t)?dt(t):ht(t,{})},getterFor:function(t){return function(e){var n;if(!yt(e)||(n=dt(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}},Tt=n,Lt=K,_t=F,Nt=tt,Bt=ot,It=Dt.get,qt=Dt.enforce,Pt=String(String).split("String");(Q.exports=function(t,e,n,i){var r,o=!!i&&!!i.unsafe,s=!!i&&!!i.enumerable,a=!!i&&!!i.noTargetGet;"function"==typeof n&&("string"!=typeof e||_t(n,"name")||Lt(n,"name",e),(r=qt(n)).source||(r.source=Pt.join("string"==typeof e?e:""))),t!==Tt?(o?!a&&t[e]&&(s=!0):delete t[e],s?t[e]=n:Lt(t,e,n)):s?t[e]=n:Nt(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&It(this).source||Bt(this)}));var Ut=n,Vt=n,Rt=function(t){return"function"==typeof t?t:void 0},Gt=function(t,e){return arguments.length<2?Rt(Ut[t])||Rt(Vt[t]):Ut[t]&&Ut[t][e]||Vt[t]&&Vt[t][e]},Ht={},Zt=Math.ceil,Xt=Math.floor,Wt=function(t){return isNaN(t=+t)?0:(t>0?Xt:Zt)(t)},Kt=Wt,Qt=Math.min,Jt=Wt,Yt=Math.max,te=Math.min,ee=v,ne=function(t){return t>0?Qt(Kt(t),9007199254740991):0},ie=function(t,e){var n=Jt(t);return n<0?Yt(n+e,0):te(n,e)},re=function(t){return function(e,n,i){var r,o=ee(e),s=ne(o.length),a=ie(i,s);if(t&&n!=n){for(;s>a;)if((r=o[a++])!=r)return!0}else for(;s>a;a++)if((t||a in o)&&o[a]===n)return t||a||0;return!t&&-1}},oe={includes:re(!0),indexOf:re(!1)},se=F,ae=v,ce=oe.indexOf,ue=bt,le=function(t,e){var n,i=ae(t),r=0,o=[];for(n in i)!se(ue,n)&&se(i,n)&&o.push(n);for(;e.length>r;)se(i,n=e[r++])&&(~ce(o,n)||o.push(n));return o},he=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype");Ht.f=Object.getOwnPropertyNames||function(t){return le(t,he)};var de={};de.f=Object.getOwnPropertySymbols;var pe,fe,ge,me=Ht,Ce=de,ve=U,be=Gt("Reflect","ownKeys")||function(t){var e=me.f(ve(t)),n=Ce.f;return n?e.concat(n(t)):e},we=F,ye=be,xe=i,ke=q,Ae=r,Fe=/#|\.prototype\./,Ee=function(t,e){var n=je[$e(t)];return n==Oe||n!=Se&&("function"==typeof e?Ae(e):!!e)},$e=Ee.normalize=function(t){return String(t).replace(Fe,".").toLowerCase()},je=Ee.data={},Se=Ee.NATIVE="N",Oe=Ee.POLYFILL="P",ze=Ee,Me=n,De=i.f,Te=K,Le=Q.exports,_e=tt,Ne=function(t,e){for(var n=ye(e),i=ke.f,r=xe.f,o=0;on;)e.push(arguments[n++]);return on[++rn]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},pe(rn),rn},Ye=function(t){delete on[t]},Ke?pe=function(t){tn.nextTick(an(t))}:nn&&nn.now?pe=function(t){nn.now(an(t))}:en&&!We?(ge=(fe=new en).port2,fe.port1.onmessage=cn,pe=He(ge.postMessage,ge,1)):Re.addEventListener&&"function"==typeof postMessage&&!Re.importScripts&&Qe&&"file:"!==Qe.protocol&&!Ge(un)?(pe=un,Re.addEventListener("message",cn,!1)):pe="onreadystatechange"in Xe("script")?function(t){Ze.appendChild(Xe("script")).onreadystatechange=function(){Ze.removeChild(this),sn(t)}}:function(t){setTimeout(an(t),0)});var ln=n,hn={set:Je,clear:Ye};function dn(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}(function(t,e){var n,i,r,o,s,a=t.target,c=t.global,u=t.stat;if(n=c?Me:u?Me[a]||_e(a,{}):(Me[a]||{}).prototype)for(i in e){if(o=e[i],r=t.noTargetGet?(s=De(n,i))&&s.value:n[i],!Be(c?i:a+(u?".":"#")+i,t.forced)&&void 0!==r){if(typeof o==typeof r)continue;Ne(o,r)}(t.sham||r&&r.sham)&&Te(o,"sham",!0),Le(n,i,o,t)}})({global:!0,bind:!0,enumerable:!0,forced:!ln.setImmediate||!ln.clearImmediate},{setImmediate:hn.set,clearImmediate:hn.clear});const pn="undefined"!=typeof window&&null!=window.customElements&&void 0!==window.customElements.polyfillWrapFlushCallback,fn=(t,e,n=null)=>{for(;e!==n;){const n=e.nextSibling;t.removeChild(e),e=n}},gn=`{{lit-${String(Math.random()).slice(2)}}}`,mn=`\x3c!--${gn}--\x3e`,Cn=new RegExp(`${gn}|${mn}`);class vn{constructor(t,e){this.parts=[],this.element=e;const n=[],i=[],r=document.createTreeWalker(e.content,133,null,!1);let o=0,s=-1,a=0;const{strings:c,values:{length:u}}=t;for(;a0;){const e=c[a],n=xn.exec(e)[2],i=n.toLowerCase()+"$lit$",r=t.getAttribute(i);t.removeAttribute(i);const o=r.split(Cn);this.parts.push({type:"attribute",index:s,name:n,strings:o}),a+=o.length-1}}"TEMPLATE"===t.tagName&&(i.push(t),r.currentNode=t.content)}else if(3===t.nodeType){const e=t.data;if(e.indexOf(gn)>=0){const i=t.parentNode,r=e.split(Cn),o=r.length-1;for(let e=0;e{const n=t.length-e.length;return n>=0&&t.slice(n)===e},wn=t=>-1!==t.index,yn=()=>document.createComment(""),xn=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;function kn(t,e){const{element:{content:n},parts:i}=t,r=document.createTreeWalker(n,133,null,!1);let o=Fn(i),s=i[o],a=-1,c=0;const u=[];let l=null;for(;r.nextNode();){a++;const t=r.currentNode;for(t.previousSibling===l&&(l=null),e.has(t)&&(u.push(t),null===l&&(l=t)),null!==l&&c++;void 0!==s&&s.index===a;)s.index=null!==l?-1:s.index-c,o=Fn(i,o),s=i[o]}u.forEach((t=>t.parentNode.removeChild(t)))}const An=t=>{let e=11===t.nodeType?0:1;const n=document.createTreeWalker(t,133,null,!1);for(;n.nextNode();)e++;return e},Fn=(t,e=-1)=>{for(let n=e+1;n(...e)=>{const n=t(...e);return En.set(n,!0),n},jn=t=>"function"==typeof t&&En.has(t),Sn={},On={};class zn{constructor(t,e,n){this.F=[],this.template=t,this.processor=e,this.options=n}update(t){let e=0;for(const n of this.F)void 0!==n&&n.setValue(t[e]),e++;for(const t of this.F)void 0!==t&&t.commit()}L(){const t=pn?this.template.element.content.cloneNode(!0):document.importNode(this.template.element.content,!0),e=[],n=this.template.parts,i=document.createTreeWalker(t,133,null,!1);let r,o=0,s=0,a=i.nextNode();for(;ot}),Dn=` ${gn} `;class Tn{constructor(t,e,n,i){this.strings=t,this.values=e,this.type=n,this.processor=i}getHTML(){const t=this.strings.length-1;let e="",n=!1;for(let i=0;i-1||n)&&-1===t.indexOf("--\x3e",r+1);const o=xn.exec(t);e+=null===o?t+(n?Dn:mn):t.substr(0,o.index)+o[1]+o[2]+"$lit$"+o[3]+gn}return e+=this.strings[t],e}getTemplateElement(){const t=document.createElement("template");let e=this.getHTML();return void 0!==Mn&&(e=Mn.createHTML(e)),t.innerHTML=e,t}}const Ln=t=>null===t||!("object"==typeof t||"function"==typeof t),_n=t=>Array.isArray(t)||!(!t||!t[Symbol.iterator]);class Nn{constructor(t,e,n){this.dirty=!0,this.element=t,this.name=e,this.strings=n,this.parts=[];for(let t=0;t{try{const t={get capture(){return Vn=!0,!1}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){}})();class Rn{constructor(t,e,n){this.value=void 0,this.B=void 0,this.element=t,this.eventName=e,this.eventContext=n,this.H=t=>this.handleEvent(t)}setValue(t){this.B=t}commit(){for(;jn(this.B);){const t=this.B;this.B=Sn,t(this)}if(this.B===Sn)return;const t=this.B,e=this.value,n=null==t||null!=e&&(t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive),i=null!=t&&(null==e||n);n&&this.element.removeEventListener(this.eventName,this.H,this.Z),i&&(this.Z=Gn(t),this.element.addEventListener(this.eventName,this.H,this.Z)),this.value=t,this.B=Sn}handleEvent(t){"function"==typeof this.value?this.value.call(this.eventContext||this.element,t):this.value.handleEvent(t)}}const Gn=t=>t&&(Vn?{capture:t.capture,passive:t.passive,once:t.once}:t.capture);function Hn(t){let e=Zn.get(t.type);void 0===e&&(e={stringsArray:new WeakMap,keyString:new Map},Zn.set(t.type,e));let n=e.stringsArray.get(t.strings);if(void 0!==n)return n;const i=t.strings.join(gn);return n=e.keyString.get(i),void 0===n&&(n=new vn(t,t.getTemplateElement()),e.keyString.set(i,n)),e.stringsArray.set(t.strings,n),n}const Zn=new Map,Xn=new WeakMap;const Wn=new class{handleAttributeExpressions(t,e,n,i){const r=e[0];if("."===r){return new Pn(t,e.slice(1),n).parts}if("@"===r)return[new Rn(t,e.slice(1),i.eventContext)];if("?"===r)return[new qn(t,e.slice(1),n)];return new Nn(t,e,n).parts}handleTextExpression(t){return new In(t)}};"undefined"!=typeof window&&(window.litHtmlVersions||(window.litHtmlVersions=[])).push("1.3.0");const Kn=(t,...e)=>new Tn(t,e,"html",Wn),Qn=(t,e)=>`${t}--${e}`;let Jn=!0;void 0===window.ShadyCSS?Jn=!1:void 0===window.ShadyCSS.prepareTemplateDom&&(console.warn("Incompatible ShadyCSS version detected. Please update to at least @webcomponents/webcomponentsjs@2.0.2 and @webcomponents/shadycss@1.3.1."),Jn=!1);const Yn=t=>e=>{const n=Qn(e.type,t);let i=Zn.get(n);void 0===i&&(i={stringsArray:new WeakMap,keyString:new Map},Zn.set(n,i));let r=i.stringsArray.get(e.strings);if(void 0!==r)return r;const o=e.strings.join(gn);if(r=i.keyString.get(o),void 0===r){const n=e.getTemplateElement();Jn&&window.ShadyCSS.prepareTemplateDom(n,t),r=new vn(e,n),i.keyString.set(o,r)}return i.stringsArray.set(e.strings,r),r},ti=["html","svg"],ei=new Set,ni=(t,e,n)=>{ei.add(t);const i=n?n.element:document.createElement("template"),r=e.querySelectorAll("style"),{length:o}=r;if(0===o)return void window.ShadyCSS.prepareTemplateStyles(i,t);const s=document.createElement("style");for(let t=0;t{ti.forEach((e=>{const n=Zn.get(Qn(e,t));void 0!==n&&n.keyString.forEach((t=>{const{element:{content:e}}=t,n=new Set;Array.from(e.querySelectorAll("style")).forEach((t=>{n.add(t)})),kn(t,n)}))}))})(t);const a=i.content;n?function(t,e,n=null){const{element:{content:i},parts:r}=t;if(null==n)return void i.appendChild(e);const o=document.createTreeWalker(i,133,null,!1);let s=Fn(r),a=0,c=-1;for(;o.nextNode();)for(c++,o.currentNode===n&&(a=An(e),n.parentNode.insertBefore(e,n));-1!==s&&r[s].index===c;){if(a>0){for(;-1!==s;)r[s].index+=a,s=Fn(r,s);return}s=Fn(r,s)}}(n,s,a.firstChild):a.insertBefore(s,a.firstChild),window.ShadyCSS.prepareTemplateStyles(i,t);const c=a.querySelector("style");if(window.ShadyCSS.nativeShadow&&null!==c)e.insertBefore(c.cloneNode(!0),e.firstChild);else if(n){a.insertBefore(s,a.firstChild);const t=new Set;t.add(s),kn(n,t)}};window.JSCompiler_renameProperty=(t,e)=>t;const ii={toAttribute(t,e){switch(e){case Boolean:return t?"":null;case Object:case Array:return null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){switch(e){case Boolean:return null!==t;case Number:return null===t?null:Number(t);case Object:case Array:return JSON.parse(t)}return t}},ri=(t,e)=>e!==t&&(e==e||t==t),oi={attribute:!0,type:String,converter:ii,reflect:!1,hasChanged:ri};class si extends HTMLElement{constructor(){super(),this.initialize()}static get observedAttributes(){this.finalize();const t=[];return this._classProperties.forEach(((e,n)=>{const i=this.W(n,e);void 0!==i&&(this.J.set(i,n),t.push(i))})),t}static Y(){if(!this.hasOwnProperty(JSCompiler_renameProperty("_classProperties",this))){this._classProperties=new Map;const t=Object.getPrototypeOf(this)._classProperties;void 0!==t&&t.forEach(((t,e)=>this._classProperties.set(e,t)))}}static createProperty(t,e=oi){if(this.Y(),this._classProperties.set(t,e),e.noAccessor||this.prototype.hasOwnProperty(t))return;const n="symbol"==typeof t?Symbol():`__${t}`,i=this.getPropertyDescriptor(t,n,e);void 0!==i&&Object.defineProperty(this.prototype,t,i)}static getPropertyDescriptor(t,e,n){return{get(){return this[e]},set(i){const r=this[t];this[e]=i,this.requestUpdateInternal(t,r,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this._classProperties&&this._classProperties.get(t)||oi}static finalize(){const t=Object.getPrototypeOf(this);if(t.hasOwnProperty("finalized")||t.finalize(),this.finalized=!0,this.Y(),this.J=new Map,this.hasOwnProperty(JSCompiler_renameProperty("properties",this))){const t=this.properties,e=[...Object.getOwnPropertyNames(t),..."function"==typeof Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t):[]];for(const n of e)this.createProperty(n,t[n])}}static W(t,e){const n=e.attribute;return!1===n?void 0:"string"==typeof n?n:"string"==typeof t?t.toLowerCase():void 0}static tt(t,e,n=ri){return n(t,e)}static et(t,e){const n=e.type,i=e.converter||ii,r="function"==typeof i?i:i.fromAttribute;return r?r(t,n):t}static nt(t,e){if(void 0===e.reflect)return;const n=e.type,i=e.converter;return(i&&i.toAttribute||ii.toAttribute)(t,n)}initialize(){this.it=0,this.rt=new Promise((t=>this.ot=t)),this.st=new Map,this.ct(),this.requestUpdateInternal()}ct(){this.constructor._classProperties.forEach(((t,e)=>{if(this.hasOwnProperty(e)){const t=this[e];delete this[e],this.ut||(this.ut=new Map),this.ut.set(e,t)}}))}lt(){this.ut.forEach(((t,e)=>this[e]=t)),this.ut=void 0}connectedCallback(){this.enableUpdating()}enableUpdating(){void 0!==this.ot&&(this.ot(),this.ot=void 0)}disconnectedCallback(){}attributeChangedCallback(t,e,n){e!==n&&this.ht(t,n)}dt(t,e,n=oi){const i=this.constructor,r=i.W(t,n);if(void 0!==r){const t=i.nt(e,n);if(void 0===t)return;this.it=8|this.it,null==t?this.removeAttribute(r):this.setAttribute(r,t),this.it=-9&this.it}}ht(t,e){if(8&this.it)return;const n=this.constructor,i=n.J.get(t);if(void 0!==i){const t=n.getPropertyOptions(i);this.it=16|this.it,this[i]=n.et(e,t),this.it=-17&this.it}}requestUpdateInternal(t,e,n){let i=!0;if(void 0!==t){const r=this.constructor;n=n||r.getPropertyOptions(t),r.tt(this[t],e,n.hasChanged)?(this.st.has(t)||this.st.set(t,e),!0!==n.reflect||16&this.it||(void 0===this.ft&&(this.ft=new Map),this.ft.set(t,n))):i=!1}!this.gt&&i&&(this.rt=this.Ct())}requestUpdate(t,e){return this.requestUpdateInternal(t,e),this.updateComplete}async Ct(){this.it=4|this.it;try{await this.rt}catch(t){}const t=this.performUpdate();return null!=t&&await t,!this.gt}get gt(){return 4&this.it}get hasUpdated(){return 1&this.it}performUpdate(){if(!this.gt)return;this.ut&&this.lt();let t=!1;const e=this.st;try{t=this.shouldUpdate(e),t?this.update(e):this.vt()}catch(e){throw t=!1,this.vt(),e}t&&(1&this.it||(this.it=1|this.it,this.firstUpdated(e)),this.updated(e))}vt(){this.st=new Map,this.it=-5&this.it}get updateComplete(){return this.bt()}bt(){return this.rt}shouldUpdate(t){return!0}update(t){void 0!==this.ft&&this.ft.size>0&&(this.ft.forEach(((t,e)=>this.dt(e,this[e],t))),this.ft=void 0),this.vt()}updated(t){}firstUpdated(t){}}si.finalized=!0;const ai=window.ShadowRoot&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,ci=Symbol();class ui{constructor(t,e){if(e!==ci)throw new Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t}get styleSheet(){return void 0===this.wt&&(ai?(this.wt=new CSSStyleSheet,this.wt.replaceSync(this.cssText)):this.wt=null),this.wt}toString(){return this.cssText}}const li=t=>new ui(String(t),ci),hi=(t,...e)=>{const n=e.reduce(((e,n,i)=>e+(t=>{if(t instanceof ui)return t.cssText;if("number"==typeof t)return t;throw new Error(`Value passed to 'css' function must be a 'css' function result: ${t}. Use 'unsafeCSS' to pass non-literal values, but\n take care to ensure page security.`)})(n)+t[i+1]),t[0]);return new ui(n,ci)};(window.litElementVersions||(window.litElementVersions=[])).push("2.4.0");const di={};class pi extends si{static getStyles(){return this.styles}static yt(){if(this.hasOwnProperty(JSCompiler_renameProperty("_styles",this)))return;const t=this.getStyles();if(Array.isArray(t)){const e=(t,n)=>t.reduceRight(((t,n)=>Array.isArray(n)?e(n,t):(t.add(n),t)),n),n=e(t,new Set),i=[];n.forEach((t=>i.unshift(t))),this.xt=i}else this.xt=void 0===t?[]:[t];this.xt=this.xt.map((t=>{if(t instanceof CSSStyleSheet&&!ai){const e=Array.prototype.slice.call(t.cssRules).reduce(((t,e)=>t+e.cssText),"");return li(e)}return t}))}initialize(){super.initialize(),this.constructor.yt(),this.renderRoot=this.createRenderRoot(),window.ShadowRoot&&this.renderRoot instanceof window.ShadowRoot&&this.adoptStyles()}createRenderRoot(){return this.attachShadow({mode:"open"})}adoptStyles(){const t=this.constructor.xt;0!==t.length&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow?ai?this.renderRoot.adoptedStyleSheets=t.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):this.kt=!0:window.ShadyCSS.ScopingShim.prepareAdoptedCssText(t.map((t=>t.cssText)),this.localName))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&void 0!==window.ShadyCSS&&window.ShadyCSS.styleElement(this)}update(t){const e=this.render();super.update(t),e!==di&&this.constructor.render(e,this.renderRoot,{scopeName:this.localName,eventContext:this}),this.kt&&(this.kt=!1,this.constructor.xt.forEach((t=>{const e=document.createElement("style");e.textContent=t.cssText,this.renderRoot.appendChild(e)})))}render(){return di}}pi.finalized=!0,pi.render=(t,e,n)=>{if(!n||"object"!=typeof n||!n.scopeName)throw new Error("The `scopeName` option is required.");const i=n.scopeName,r=Xn.has(e),o=Jn&&11===e.nodeType&&!!e.host,s=o&&!ei.has(i),a=s?document.createDocumentFragment():e;if(((t,e,n)=>{let i=Xn.get(e);void 0===i&&(fn(e,e.firstChild),Xn.set(e,i=new In(Object.assign({templateFactory:Hn},n))),i.appendInto(e)),i.setValue(t),i.commit()})(t,a,Object.assign({templateFactory:Yn(i)},n)),s){const t=Xn.get(a);Xn.delete(a);const n=t.value instanceof zn?t.value.template:void 0;ni(i,a,n),fn(e,e.firstChild),e.appendChild(a),Xn.set(e,t)}!r&&o&&window.ShadyCSS.styleElement(e.host)};const fi=new WeakMap,gi=$n((t=>e=>{if(!(e instanceof In))throw new Error("cache can only be used in text bindings");let n=fi.get(e);void 0===n&&(n=new WeakMap,fi.set(e,n));const i=e.value;if(i instanceof zn){if(t instanceof Tn&&i.template===e.options.templateFactory(t))return void e.setValue(t);{let t=n.get(i.template);void 0===t&&(t={instance:i,nodes:document.createDocumentFragment()},n.set(i.template,t)),((t,e,n=null,i=null)=>{for(;e!==n;){const n=e.nextSibling;t.insertBefore(e,i),e=n}})(t.nodes,e.startNode.nextSibling,e.endNode)}}if(t instanceof Tn){const i=e.options.templateFactory(t),r=n.get(i);void 0!==r&&(e.setValue(r.nodes),e.commit(),e.value=r.instance)}e.setValue(t)}));var mi={items:[{name:"learn",route:!1,children:[{heading:"docs"},{name:"guide",page:"guide/intro"},{name:"api"},{name:"examples",url:"https://github.com/stalniy/casl-examples"},{name:"cookbook",page:"cookbook/intro"}]},{name:"ecosystem",route:!1,children:[{heading:"packages"},{name:"pkg-prisma",page:"package/casl-prisma"},{name:"pkg-mongoose",page:"package/casl-mongoose"},{name:"pkg-angular",page:"package/casl-angular"},{name:"pkg-react",page:"package/casl-react"},{name:"pkg-vue",page:"package/casl-vue"},{name:"pkg-aurelia",page:"package/casl-aurelia"},{heading:"help"},{name:"questions",url:"https://stackoverflow.com/questions/tagged/casl"},{name:"chat",url:"https://gitter.im/stalniy-casl/casl"},{heading:"news"},{name:"blog",url:"https://sergiy-stotskiy.medium.com"}]},{name:"support"}],footer:[{icon:"github",url:"https://github.com/stalniy/casl"},{icon:"twitter",url:"https://twitter.com/sergiy_stotskiy"},{icon:"medium",url:"https://sergiy-stotskiy.medium.com"}]},Ci={exports:{}};Ci.exports=Fi,Ci.exports.parse=bi,Ci.exports.compile=function(t,e){return wi(bi(t,e))},Ci.exports.tokensToFunction=wi,Ci.exports.tokensToRegExp=Ai;var vi=new RegExp(["(\\\\.)","(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?"].join("|"),"g");function bi(t,e){for(var n,i=[],r=0,o=0,s="",a=e&&e.delimiter||"/",c=e&&e.delimiters||"./",u=!1;null!==(n=vi.exec(t));){var l=n[0],h=n[1],d=n.index;if(s+=t.slice(o,d),o=d+l.length,h)s+=h[1],u=!0;else{var p="",f=t[o],g=n[2],m=n[3],C=n[4],v=n[5];if(!u&&s.length){var b=s.length-1;c.indexOf(s[b])>-1&&(p=s[b],s=s.slice(0,b))}s&&(i.push(s),s="",u=!1);var w=""!==p&&void 0!==f&&f!==p,y="+"===v||"*"===v,x="?"===v||"*"===v,k=p||a,A=m||C;i.push({name:g||r++,prefix:p,delimiter:k,optional:x,repeat:y,partial:w,pattern:A?xi(A):"[^"+yi(k)+"]+?"})}}return(s||o-1;else{var p=d.repeat?"(?:"+d.pattern+")(?:"+yi(d.delimiter)+"(?:"+d.pattern+"))*":d.pattern;e&&e.push(d),d.optional?d.partial?u+=yi(d.prefix)+"("+p+")?":u+="(?:"+yi(d.prefix)+"("+p+"))?":u+=yi(d.prefix)+"("+p+")"}}return o?(i||(u+="(?:"+s+")?"),u+="$"===c?"$":"(?="+c+")"):(i||(u+="(?:"+s+"(?="+c+"))?"),l||(u+="(?="+s+"|"+c+")")),new RegExp(u,ki(n))}function Fi(t,e,n){return t instanceof RegExp?function(t,e){if(!e)return t;var n=t.source.match(/\((?!\?)/g);if(n)for(var i=0;it.replace(new RegExp(`{{[  ]*${e}[  ]*}}`,"gm"),String(Ri(n)))),t)}function Vi(t,e){const n=t.split(".");let i=e.strings;for(;null!=i&&n.length>0;)i=i[n.shift()];return null!=i?i.toString():null}function Ri(t){return"function"==typeof t?t():t}let Gi={loader:()=>Promise.resolve({}),empty:t=>`[${t}]`,lookup:Vi,interpolate:Ui,translationCache:{}};function Hi(t,e,n=Gi){var i;i={previousStrings:n.strings,previousLang:n.lang,lang:n.lang=t,strings:n.strings=e},window.dispatchEvent(new CustomEvent("langChanged",{detail:i}))}function Zi(t,e){const n=e=>t(e.detail);return window.addEventListener("langChanged",n,e),()=>window.removeEventListener("langChanged",n)}function Xi(t,e,n=Gi){let i=n.translationCache[t]||(n.translationCache[t]=n.lookup(t,n)||n.empty(t,n));return null!=(e=null!=e?Ri(e):null)?n.interpolate(i,e,n):i}function Wi(t){return t instanceof In?t.startNode.isConnected:t instanceof Bn?t.committer.element.isConnected:t.element.isConnected}const Ki=new Map;var Qi;function Ji(t,e,n){const i=e(n);t.value!==i&&(t.setValue(i),t.commit())}Zi((t=>{for(const[e,n]of Ki)Wi(e)&&Ji(e,n,t)})),Qi=Ki,setInterval((()=>{return t=()=>function(t){for(const[e]of t)Wi(e)||t.delete(e)}(Qi),void("requestIdleCallback"in window?window.requestIdleCallback(t):setTimeout(t));var t}),6e4);const Yi=$n((t=>e=>{Ki.set(e,t),Ji(e,t)})),tr=new WeakMap,er=$n((t=>e=>{if(!(e instanceof In))throw new Error("unsafeHTML can only be used in text bindings");const n=tr.get(e);if(void 0!==n&&Ln(t)&&t===n.value&&e.value===n.fragment)return;const i=document.createElement("template");i.innerHTML=t;const r=document.importNode(i.content,!0);e.setValue(r),tr.set(e,{value:t,fragment:r})})),nr=(...t)=>JSON.stringify(t);function ir(t,e=nr){const n=new Map,i=function(...i){const r=e(...i);return n.has(r)||n.set(r,t.apply(this,i)),n.get(r)};return i.cache=n,i}const rr=t=>t,or={json:JSON,raw:{parse:rr,stringify:rr},txtArrayJSON:{parse(t){const e=t.trim().replace(/[\r\n]+/g,",");return JSON.parse(`[${e}]`)},stringify(){throw new Error('"txtArrayJSON" format is not serializable')}}};function sr(t,e={}){const n=or[e.format||"json"];return new Promise(((i,r)=>{const o=new XMLHttpRequest;o.open(e.method||"GET",t),e.headers&&Object.keys(e.headers).forEach((t=>{o.setRequestHeader(t,e.headers[t])})),o.onload=()=>i({status:o.status,headers:{"content-type":o.getResponseHeader("Content-Type")},body:n.parse(o.responseText)}),o.ontimeout=o.onerror=r,o.send(e.data?n.stringify(e.data):null)}))}const ar=Object.create(null);function cr(t,e={}){const n=e.absoluteUrl?t:Pi+t;return"GET"!==(e.method||"GET")?sr(n,e):(ar[n]=ar[n]||sr(n,e),!0===e.cache?ar[n]:ar[n].then((t=>(delete ar[n],t))).catch((t=>(delete ar[n],Promise.reject(t)))))}var ur={en:{default:"/assets/a.507f0a5d.json"}};function lr(t,e){const n=t.split(".");let i=e.strings;for(let t=0;te[n]))}const pr=function(t){return Gi=Object.assign(Object.assign({},Gi),t)}({loader:async t=>(await cr(ur[t].default)).body,lookup:lr,interpolate:dr,empty:function(t){return console.warn(`missing i18n key: ${t}`),t}}),fr=ir(((t,e)=>new Intl.DateTimeFormat(t,Xi(`dateTimeFormats.${e}`)))),gr=["en"],mr=gr[0],Cr=()=>pr.lang,vr=Xi;function br(t){if(!gr.includes(t))throw new Error(`Locale ${t} is not supported. Supported: ${gr.join(", ")}`);return async function(t,e=Gi){const n=await e.loader(t,e);e.translationCache={},Hi(t,n,e)}(t)}var wr=function(){return(wr=Object.assign||function(t){for(var e,n=1,i=arguments.length;n=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function xr(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var i,r,o=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(i=o.next()).done;)s.push(i.value)}catch(t){r={error:t}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return s}function kr(){for(var t=[],e=0;e0?[{node:n,keys:i}]:[]}return t.prototype.next=function(){var t=this.dive();return this.backtrack(),t},t.prototype.dive=function(){if(0===this.Ft.length)return{done:!0,value:void 0};var t=Er(this.Ft),e=t.node,n=t.keys;return""===Er(n)?{done:!1,value:this.result()}:(this.Ft.push({node:e[Er(n)],keys:Object.keys(e[Er(n)])}),this.dive())},t.prototype.backtrack=function(){0!==this.Ft.length&&(Er(this.Ft).keys.pop(),Er(this.Ft).keys.length>0||(this.Ft.pop(),this.backtrack()))},t.prototype.key=function(){return this.set._prefix+this.Ft.map((function(t){var e=t.keys;return Er(e)})).filter((function(t){return""!==t})).join("")},t.prototype.value=function(){return Er(this.Ft).node[""]},t.prototype.result=function(){return"VALUES"===this.At?this.value():"KEYS"===this.At?this.key():[this.key(),this.value()]},t.prototype[Symbol.iterator]=function(){return this},t}(),Er=function(t){return t[t.length-1]},$r=function(t,e,n,i,r,o){o.push({distance:0,ia:i,ib:0,edit:r});for(var s=[];o.length>0;){var a=o.pop(),c=a.distance,u=a.ia,l=a.ib,h=a.edit;if(l!==e.length)if(t[u]===e[l])o.push({distance:c,ia:u+1,ib:l+1,edit:0});else{if(c>=n)continue;2!==h&&o.push({distance:c+1,ia:u,ib:l+1,edit:3}),u0;)s();return r}(this._tree,t,e)},t.prototype.get=function(t){var e=Or(this._tree,t);return void 0!==e?e[""]:void 0},t.prototype.has=function(t){var e=Or(this._tree,t);return void 0!==e&&e.hasOwnProperty("")},t.prototype.keys=function(){return new Fr(this,"KEYS")},t.prototype.set=function(t,e){if("string"!=typeof t)throw new Error("key must be a string");return delete this.Et,zr(this._tree,t)[""]=e,this},Object.defineProperty(t.prototype,"size",{get:function(){var t=this;return this.Et||(this.Et=0,this.forEach((function(){t.Et+=1}))),this.Et},enumerable:!1,configurable:!0}),t.prototype.update=function(t,e){if("string"!=typeof t)throw new Error("key must be a string");delete this.Et;var n=zr(this._tree,t);return n[""]=e(n[""]),this},t.prototype.values=function(){return new Fr(this,"VALUES")},t.prototype[Symbol.iterator]=function(){return this.entries()},t.from=function(e){var n,i,r=new t;try{for(var o=yr(e),s=o.next();!s.done;s=o.next()){var a=xr(s.value,2),c=a[0],u=a[1];r.set(c,u)}}catch(t){n={error:t}}finally{try{s&&!s.done&&(i=o.return)&&i.call(o)}finally{if(n)throw n.error}}return r},t.fromObject=function(e){return t.from(Object.entries(e))},t}(),Sr=function(t,e,n){if(void 0===n&&(n=[]),0===e.length||null==t)return[t,n];var i=Object.keys(t).find((function(t){return""!==t&&e.startsWith(t)}));return void 0===i?(n.push([t,e]),Sr(void 0,"",n)):(n.push([t,i]),Sr(t[i],e.slice(i.length),n))},Or=function(t,e){if(0===e.length||null==t)return t;var n=Object.keys(t).find((function(t){return""!==t&&e.startsWith(t)}));return void 0!==n?Or(t[n],e.slice(n.length)):void 0},zr=function(t,e){var n;if(0===e.length||null==t)return t;var i=Object.keys(t).find((function(t){return""!==t&&e.startsWith(t)}));if(void 0===i){var r=Object.keys(t).find((function(t){return""!==t&&t.startsWith(e[0])}));if(void 0!==r){var o=Mr(e,r);return t[o]=((n={})[r.slice(o.length)]=t[r],n),delete t[r],zr(t[o],e.slice(o.length))}return t[e]={},t[e]}return zr(t[i],e.slice(i.length))},Mr=function(t,e,n,i,r){return void 0===n&&(n=0),void 0===i&&(i=Math.min(t.length,e.length)),void 0===r&&(r=""),n>=i||t[n]!==e[n]?r:Mr(t,e,n+1,i,r+t[n])},Dr=function(t,e){var n=xr(Sr(t,e),2),i=n[0],r=n[1];if(void 0!==i){delete i[""];var o=Object.keys(i);0===o.length&&Tr(r),1===o.length&&Lr(r,o[0],i[o[0]])}},Tr=function(t){if(0!==t.length){var e=xr(_r(t),2),n=e[0];delete n[e[1]],0===Object.keys(n).length&&Tr(t.slice(0,-1))}},Lr=function(t,e,n){if(0!==t.length){var i=xr(_r(t),2),r=i[0],o=i[1];r[o+e]=n,delete r[o]}},_r=function(t){return t[t.length-1]},Nr=function(){function t(t){if(null==(null==t?void 0:t.fields))throw new Error('MiniSearch: option "fields" must be provided');this.$t=wr(wr(wr({},Vr),t),{searchOptions:wr(wr({},Rr),t.searchOptions||{})}),this.jt=new jr,this.St=0,this.Ot={},this.zt={},this.Mt={},this.Dt={},this.Tt=0,this.Lt={},this.addFields(this.$t.fields)}return t.prototype.add=function(t){var e=this,n=this.$t,i=n.extractField,r=n.tokenize,o=n.processTerm,s=n.fields,a=n.idField,c=i(t,a);if(null==c)throw new Error('MiniSearch: document does not have ID field "'+a+'"');var u=this.addDocumentId(c);this.saveStoredFields(u,t),s.forEach((function(n){var s=i(t,n);if(null!=s){var a=r(s.toString(),n);e.addFieldLength(u,e.zt[n],e.documentCount-1,a.length),a.forEach((function(t){var i=o(t,n);i&&e.addTerm(e.zt[n],u,i)}))}}))},t.prototype.addAll=function(t){var e=this;t.forEach((function(t){return e.add(t)}))},t.prototype.addAllAsync=function(t,e){var n=this;void 0===e&&(e={});var i=e.chunkSize,r=void 0===i?10:i,o={chunk:[],promise:Promise.resolve()},s=t.reduce((function(t,e,i){var o=t.chunk,s=t.promise;return o.push(e),(i+1)%r==0?{chunk:[],promise:s.then((function(){return new Promise((function(t){return setTimeout(t,0)}))})).then((function(){return n.addAll(o)}))}:{chunk:o,promise:s}}),o),a=s.chunk;return s.promise.then((function(){return n.addAll(a)}))},t.prototype.remove=function(t){var e=this,n=this.$t,i=n.tokenize,r=n.processTerm,o=n.extractField,s=n.fields,a=n.idField,c=o(t,a);if(null==c)throw new Error('MiniSearch: document does not have ID field "'+a+'"');var u=xr(Object.entries(this.Ot).find((function(t){var e=xr(t,2);e[0];var n=e[1];return c===n}))||[],1)[0];if(null==u)throw new Error("MiniSearch: cannot remove document with ID "+c+": it is not in the index");s.forEach((function(n){var s=o(t,n);null!=s&&i(s.toString(),n).forEach((function(t){var i=r(t,n);i&&e.removeTerm(e.zt[n],u,i)}))})),delete this.Lt[u],delete this.Ot[u],this.St-=1},t.prototype.removeAll=function(t){var e=this;if(t)t.forEach((function(t){return e.remove(t)}));else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this.jt=new jr,this.St=0,this.Ot={},this.Mt={},this.Dt={},this.Lt={},this.Tt=0}},t.prototype.search=function(t,e){var n=this;void 0===e&&(e={});var i=this.$t,r=i.tokenize,o=i.processTerm,s=i.searchOptions,a=wr(wr({tokenize:r,processTerm:o},s),e),c=a.tokenize,u=a.processTerm,l=c(t).map((function(t){return u(t)})).filter((function(t){return!!t})).map(Pr(a)).map((function(t){return n.executeQuery(t,a)})),h=this.combineResults(l,a.combineWith);return Object.entries(h).reduce((function(t,e){var i=xr(e,2),r=i[0],o=i[1],s=o.score,c=o.match,u=o.terms,l={id:n.Ot[r],terms:Ur(u),score:s,match:c};return Object.assign(l,n.Lt[r]),(null==a.filter||a.filter(l))&&t.push(l),t}),[]).sort((function(t,e){return t.scoret.title)).join(" ");default:return t[e]}},fields:["title","headings","summary"],searchOptions:{boost:{title:2}}};var Xr=Object.freeze({__proto__:null,pages:{en:{notfound:"/assets/a.3a1055aa.json","support-casljs":"/assets/a.fb3a29b4.json","api/casl-ability":"/assets/a.39bf2d3c.json","api/casl-ability-extra":"/assets/a.f4795c7d.json","cookbook/cache-rules":"/assets/a.e43ce3e2.json","cookbook/claim-authorization":"/assets/a.8e663da7.json","cookbook/intro":"/assets/a.0dea9028.json","cookbook/less-confusing-can-api":"/assets/a.d83e511d.json","cookbook/roles-with-persisted-permissions":"/assets/a.6ae53ea0.json","cookbook/roles-with-static-permissions":"/assets/a.12302ceb.json","guide/conditions-in-depth":"/assets/a.55d6bf93.json","guide/define-aliases":"/assets/a.34a69a85.json","guide/define-rules":"/assets/a.5668f429.json","guide/install":"/assets/a.83a32d45.json","guide/intro":"/assets/a.c7c52381.json","guide/restricting-fields":"/assets/a.704691ce.json","guide/subject-type-detection":"/assets/a.1cb23e25.json","package/casl-angular":"/assets/a.f6973802.json","package/casl-aurelia":"/assets/a.c852f966.json","package/casl-mongoose":"/assets/a.028dc271.json","package/casl-prisma":"/assets/a.6658bdbb.json","package/casl-react":"/assets/a.c38715ec.json","package/casl-vue":"/assets/a.d660db78.json","advanced/ability-inheritance":"/assets/a.d397cd54.json","advanced/ability-to-database-query":"/assets/a.1cbe572a.json","advanced/customize-ability":"/assets/a.43b3ebd4.json","advanced/debugging-testing":"/assets/a.895c28e2.json","advanced/typescript":"/assets/a.29bf67b2.json"}},summaries:{en:"/assets/content_pages_summaries.en.5c204f49.json"},searchIndexes:{en:"/assets/content_pages_searchIndexes.en.22966191.json"}});const Wr={page:new class{constructor({pages:t,summaries:e,searchIndexes:n}){this._t=t,this.Nt=e,this.Bt=n,this.It=ir(this.It),this.qt=ir(this.qt),this.Pt=ir(this.Pt),this.byCategories=ir(this.byCategories),this.load=ir(this.load)}async load(t,e){const n=this._t[t][e];if(!n)throw i=`Page with ${e} is not found`,Object.assign(new Error(i),{code:"NOT_FOUND"});var i;return(await cr(n)).body}async qt(t){return(await cr(this.Nt[t])).body}async Pt(t,e=null){const n=await this.byCategories(t,e);return Object.keys(n).reduce(((t,e)=>t.concat(n[e])),[])}async getNearestFor(t,e,n=null){const i=await this.Pt(t,n),r=i.findIndex((t=>t.id===e));if(-1===r)return[];const o=r-1,s=r+1;return[o<0?void 0:i[o],s>=i.length?void 0:i[s]]}async byCategories(t,e=null){const{items:n}=await this.qt(t),i={};return n.forEach((t=>{t.categories.forEach((e=>{i[e]=i[e]||[],i[e].push(t)}))})),Array.isArray(e)?e.reduce(((t,e)=>(t[e]=i[e],t)),{}):i}async at(t,e){const{items:n}=await this.qt(t);return n[e]}async It(t){const e=this.Bt[t],n=await cr(e);return Nr.loadJS(n.body,Zr)}async search(t,e,n){const[i,r]=await Promise.all([this.It(t),this.qt(t)]);return i.search(e,n).slice(0,15).map((t=>{const[e]=r.byId[t.id];return t.doc=r.items[e],t.hints=function(t){const e={};return t.terms.forEach((n=>{const i=new RegExp(`(${n})`,"gi");t.match[n].forEach((r=>{const o=t.doc[r];if("string"==typeof o)e[r]=o.replace(i,"$1");else if("headings"===r){const t=o.reduce(((t,e)=>(e.title.toLowerCase().includes(n)&&t.push({id:e.id,title:e.title.replace(i,"$1")}),t)),[]);e[r]=t.length?t:null}}))})),e}(t),t}))}}(Xr)};var Kr=t=>{const e=Wr[t];if(!e)throw new TypeError(`Unknown content loader "${t}".`);return e};const Qr=t=>t,Jr=(t=Qr)=>async e=>{const n=t(e),i=Kr("page");if(n.id)n.id.endsWith("/")?n.redirectTo=n.id.slice(0,-1):[n.page,n.byCategories,n.nav]=await Promise.all([i.load(n.lang,n.id),n.categories.length?i.byCategories(n.lang,n.categories):null,i.getNearestFor(n.lang,n.id,n.categories)]);else{const t=await async function(t,e){if(!e.categories)return t.at(e.lang,0);const n=await t.byCategories(e.lang,e.categories),i=e.categories.find((t=>n[t].length));return n[i][0]}(i,n);n.redirectTo=t.id}return n},Yr=(t=>({match:e,error:n,resolved:i})=>n?function(t){if("NOT_FOUND"===t.code)return{body:Kn``};throw t}(n):i.redirectTo?{redirect:{name:"page",params:{id:i.redirectTo,lang:e.params.lang}}}:{body:t(i,e.params)})((t=>({main:Kn``,sidebar:t.byCategories?Kn``:null})));var to=Object.freeze({__proto__:null,parse:function(t){return t?JSON.parse(`{"${t.replace(/&/g,'","').replace(/=/g,'":"')}"}`):{}},stringify:function(t){return t?Object.keys(t).reduce(((e,n)=>(e.push(`${n}=${t[n]}`),e)),[]).join("&"):""}});function eo(t){return t.restrictions?t.path.replace(/:([\w_-]+)(\?)?/g,((e,n,i="")=>{const r=t.restrictions[n];return r?`:${n}(${r})${i}`:n+i})):t.path}function no(t,e){let n=!1;const i=t.replace(/:([\w_-]+)\??/g,((t,i)=>(e[i]&&"undefined"!==e[i]||(n=!0),e[i])));return n?null:i}const io=function(t,e,n){var i,r;void 0===n&&(n={});var o,s,a,c,u,l,h,d=void 0===(i=n.history)?{}:i,p=n.sideEffects,f=n.external,g=void 0!==(r=n.invisibleRedirects)&&r,m=[],C=[],v=[],b=function(){l=void 0,h=void 0},w=function(){l&&l(),b()},y=function(){h&&h(),b()},x=function(){u&&(u=void 0,m.forEach((function(t){t()})))},k=function(t,e){if(!t.redirect||!g||$i(t.redirect)){a=t,c=e;var n={response:t,navigation:e,router:s};i=n,C.forEach((function(t){t(i)})),function(t){v.splice(0).forEach((function(e){e(t)})),p&&p.forEach((function(e){e(t)}))}(n)}var i;void 0===t.redirect||$i(t.redirect)||o.navigate(t.redirect,"replace")},A=function(t,e,n,i,r){x(),n.finish();var o=ji(t,e,r,s,f);y(),k(o,i)};return o=t((function(t){var n={action:t.action,previous:a},i=e.match(t.location);if(!i)return t.finish(),void y();var r=i.route,s=i.match;!function(t){return void 0!==t.methods.resolve}(r)?A(r,s,t,n,null):(m.length&&void 0===u&&(u=function(){o.cancel(),x(),w()},m.forEach((function(t){t(u)}))),r.methods.resolve(s,f).then((function(t){return{resolved:t,error:null}}),(function(t){return{error:t,resolved:null}})).then((function(e){t.cancelled||A(r,s,t,n,e)})))}),d),s={route:e.route,history:o,external:f,observe:function(t,e){var n,i=void 0===(n=(e||{}).initial)||n;return C.push(t),a&&i&&t({response:a,navigation:c,router:s}),function(){C=C.filter((function(e){return e!==t}))}},once:function(t,e){var n,i=void 0===(n=(e||{}).initial)||n;a&&i?t({response:a,navigation:c,router:s}):v.push(t)},cancel:function(t){return m.push(t),function(){m=m.filter((function(e){return e!==t}))}},url:function(t){var e,n=t.name,i=t.params,r=t.hash,a=t.query;if(n){var c=s.route(n);c&&(e=function(t,e){return t.methods.pathname(e)}(c,i))}return o.url({pathname:e,hash:r,query:a})},navigate:function(t){w();var e,n,i=t.url,r=t.state,s=t.method;if(o.navigate({url:i,state:r},s),t.cancelled||t.finished)return e=t.cancelled,n=t.finished,l=e,h=n,b},current:function(){return{response:a,navigation:c}},destroy:function(){o.destroy()}},o.current(),s}((function(t,e){if(void 0===e&&(e={}),!window||!window.location)throw new Error("Cannot use @hickory/browser without a DOM");var n,i,r=function(t){void 0===t&&(t={});var e=t.query,n=void 0===e?{}:e,i=n.parse,r=void 0===i?Ti:i,o=n.stringify,s=void 0===o?Li:o,a=t.base;return{location:function(t,e){var n=t.url,i=t.state;if(""===n||"#"===n.charAt(0)){e||(e={pathname:"/",hash:"",query:r()});var o={pathname:e.pathname,hash:"#"===n.charAt(0)?n.substring(1):e.hash,query:e.query};return i&&(o.state=i),o}var s,c=n.indexOf("#");-1!==c?(s=n.substring(c+1),n=n.substring(0,c)):s="";var u,l=n.indexOf("?");-1!==l&&(u=n.substring(l+1),n=n.substring(0,l));var h=r(u),d=a?a.remove(n):n;""===d&&(d="/");var p={hash:s,query:h,pathname:d};return i&&(p.state=i),p},keyed:function(t,e){return t.key=e,t},stringify:function(t){if("string"==typeof t){var e=t.charAt(0);return"#"===e||"?"===e?t:a?a.add(t):t}return(void 0!==t.pathname?a?a.add(t.pathname):t.pathname:"")+Di(s(t.query),"?")+Di(t.hash,"#")}}}(e),o=(n=0,{major:function(t){return t&&(n=t[0]+1),[n++,0]},minor:function(t){return[t[0],t[1]+1]}}),s={confirmNavigation:function(t,e,n){i?i(t,e,n||_i):e()},confirm:function(t){i=t||null}},a=s.confirm,c=s.confirmNavigation;function u(t){var e=window.location,n=e.pathname+e.search+e.hash,i=t||Ni(),s=i.key,a=i.state;s||(s=o.major(),window.history.replaceState({key:s,state:a},"",n));var c=r.location({url:n,state:a});return r.keyed(c,s)}function l(t){return r.stringify(t)}var h=void 0!==Ni().key?"pop":"push",d=function(t){var e,n=t.responseHandler,i=t.utils,r=t.keygen,o=t.current,s=t.push,a=t.replace;function c(t,n,i,r){var o={location:t,action:n,finish:function(){e===o&&(i(),e=void 0)},cancel:function(t){e===o&&(r(t),o.cancelled=!0,e=void 0)},cancelled:!1};return o}function u(t){var e=i.keyed(t,r.minor(o().key));return c(e,"replace",a.finish(e),a.cancel)}function l(t){var e=i.keyed(t,r.major(o().key));return c(e,"push",s.finish(e),s.cancel)}return{prepare:function(t,e){var n=o(),r=i.location(t,n);switch(e){case"anchor":return i.stringify(r)===i.stringify(n)?u(r):l(r);case"push":return l(r);case"replace":return u(r);default:throw new Error("Invalid navigation type: "+e)}},emitNavigation:function(t){e=t,n(t)},createNavigation:c,cancelPending:function(t){e&&(e.cancel(t),e=void 0)}}}({responseHandler:t,utils:r,keygen:o,current:function(){return b.location},push:{finish:function(t){return function(){var e=l(t),n=t.key,i=t.state;try{window.history.pushState({key:n,state:i},"",e)}catch(t){window.location.assign(e)}b.location=t,h="push"}},cancel:Bi},replace:{finish:function(t){return function(){var e=l(t),n=t.key,i=t.state;try{window.history.replaceState({key:n,state:i},"",e)}catch(t){window.location.replace(e)}b.location=t,h="replace"}},cancel:Bi}}),p=d.emitNavigation,f=d.cancelPending,g=d.createNavigation,m=d.prepare,C=!1;function v(t){if(C)C=!1;else if(!function(t){return void 0===t.state&&-1===navigator.userAgent.indexOf("CriOS")}(t)){f("pop");var e=u(t.state),n=b.location.key[0]-e.key[0],i=function(){C=!0,window.history.go(n)};c({to:e,from:b.location,action:"pop"},(function(){p(g(e,"pop",(function(){b.location=e,h="pop"}),(function(t){"pop"!==t&&i()})))}),i)}}window.addEventListener("popstate",v,!1);var b={location:u(),current:function(){p(g(b.location,h,Bi,Bi))},url:l,navigate:function(t,e){void 0===e&&(e="anchor");var n=m(t,e);f(n.action),c({to:n.location,from:b.location,action:n.action},(function(){p(n)}))},go:function(t){window.history.go(t)},confirm:a,cancel:function(){f()},destroy:function(){window.removeEventListener("popstate",v),p=Bi}};return b}),function(t){var e={},n=t.map((function(t){return Oi(t,e)}));return{match:function(t){for(var e=0,i=n;e{const i=n[e.controller];if(!i)throw new Error(`Did you forget to specify controller for route "${e.name}"?`);const r={name:e.name,path:eo(e),...i(e)};return e.meta&&!1===e.meta.encode&&(r.pathOptions={compile:{encode:t=>t}}),e.children&&(r.children=t(e.children,n)),r}))}(Ii,{Home:()=>({respond:()=>({body:{main:Kn``}})}),Page(t){const e=t.meta?t.meta.categories:[];return{resolve:Jr((({params:n})=>({...n,categories:e,id:no(t.path,n)}))),respond:Yr}}}).concat({name:"notFound",path:"(.*)",respond({match:t}){const{pathname:e}=t.location,n=e.indexOf("/",1),i=-1===n?e.slice(1):e.slice(1,n),{search:r,hash:o}=window.location;return gr.includes(i)?{body:Kn``}:{redirect:{url:`/${mr}${e}${r}${o}`}}}})),{history:{base:function(t,e){if("string"!=typeof t||"/"!==t.charAt(0)||"/"===t.charAt(t.length-1))throw new Error('The base segment "'+t+'" is not valid. The "base" option must begin with a forward slash and end with a non-forward slash character.');var n=e||{},i=n.emptyRoot,r=void 0!==i&&i,o=n.strict,s=void 0!==o&&o;return{add:function(e){if(r){if("/"===e)return t;if(e.startsWith("/?")||e.startsWith("/#"))return""+t+e.substr(1)}else if("?"===e.charAt(0)||"#"===e.charAt(0))return e;return""+t+e},remove:function(e){if(""===e)return"";if(!function(t,e){return new RegExp("^"+e+"(\\/|\\?|#|$)","i").test(t)}(e,t)){if(s)throw new Error('Expected a string that begins with "'+t+'", but received "'+e+'".');return e}if(e===t){if(s&&!r)throw new Error('Received string "'+t+'", which is the same as the base, but "emptyRoot" is not true.');return"/"}return e.substr(t.length)}}}(Pi),query:to}}),ro=io.url;io.url=t=>{const e={lang:Cr(),...t.params};return ro({...t,params:e})},"scrollRestoration"in window.history&&(window.history.scrollRestoration="manual");const oo=window.visualViewport||window;const so=$n(((t,e)=>n=>{const i=function(t,e="default"){const n="string"==typeof t?new Date(t):t;return fr(pr.lang,e).format(n)}(t,e);n.value!==i&&n.setValue(i)})),ao=(t,e,n)=>Yi((()=>Xi(t,e,n))),co=$n(((t,e)=>Yi((()=>er(Xi(t,e))))));class uo extends pi{constructor(){super(),this.Ut=null,this.Vt=null,this.Rt=null,this.Gt=!1,this.ready=!1,this.Ht=[]}connectedCallback(){super.connectedCallback(),this.Ht.push(io.observe((t=>{this.Ut=t.response,this.Zt()}),{initial:!0})),this.Ht.push(function(t,e){const n=window.matchMedia(t),i=()=>e(n.matches);return oo.addEventListener("resize",i),i(),()=>oo.removeEventListener("resize",i)}("(min-width: 768px)",(t=>this.Gt=!t))),document.addEventListener("keypress",(t=>{t.ctrlKey&&t.shiftKey&&22===t.keyCode&&console.log("b126a40")}),!1)}disconnectedCallback(){super.disconnectedCallback(),this.Ht.forEach((t=>t()))}updated(){this.Rt=this.Rt||this.shadowRoot.querySelector("menu-drawer")}Xt(){this.Rt&&this.Rt.toggle()}Zt(){this.Rt&&this.Rt.close()}notify(t,e={}){const n=document.createElement("app-notification");n.message=t,"function"==typeof e.onClick&&n.addEventListener("click",e.onClick,!1),this.Vt=this.Vt||function(){const t=document.createElement("div");return Object.assign(t.style,{position:"fixed",right:"10px",bottom:"10px",zIndex:50,width:"320px"}),document.body.appendChild(t),t}(),this.Vt.appendChild(n)}Wt(t){return this.Gt?Kn`${t}

${ao("menu.root")}

`:null}Kt(t){return"home"===this.Ut.name?"":this.Gt?"col-1":t?"col-2":"col-1"}render(){if(!this.Ut||!this.ready)return null;const{body:t}=this.Ut,e=t.sidebar?gi(t.sidebar):"";return Kn`
${this.Wt(e)}
${e}
${gi(t.main||t)}
`}}dn(uo,"cName","casl-docs"),dn(uo,"properties",{ready:{type:Boolean},Gt:{type:Boolean},Ut:{type:Object}}),uo.styles=[hi`:host{display:block}.stop-war{position:fixed;z-index:1000;top:5px;right:5px}`];var lo=hi`.row{display:flex}.row.wrap{flex-wrap:wrap}.row.align-center{align-items:center}.row.align-start{align-items:start}.col{flex-grow:1;flex-basis:0;max-width:100%}.col-fixed{flex-grow:0;flex-basis:auto}@media (min-width:768px){.container{margin:auto;max-width:1200px}}`;class ho extends pi{constructor(){super(),this.theme="default",this.menu=null,this.layout=""}render(){return Kn`
`}}dn(ho,"cName","app-root"),dn(ho,"properties",{theme:{type:String},layout:{type:String},menu:{type:Object}}),ho.styles=[lo,hi`:host{display:block}app-header{position:relative;position:sticky;top:0;z-index:10;background:rgba(255,255,255,.9);box-shadow:rgba(0,0,0,.1) 0 1px 2px 0}.col-1>main,.row>main{min-width:0;padding-left:10px;padding-right:10px}.aside,main{padding-bottom:30px}aside{display:none}@media (min-width:768px){.aside{position:sticky;top:54px;height:calc(100vh - 132px);overflow-y:auto;padding-top:2rem}.row>aside{display:block;flex-basis:260px;max-width:260px;min-width:200px;padding-left:20px;box-shadow:rgba(0,0,0,.1) 1px -1px 2px 0}.row>main{flex-basis:80%;margin:0 auto;max-width:800px}}`];var po=hi`.md pre{overflow:auto}.md a,.md app-link{color:#81a2be;text-decoration:underline;border-bottom:0}.md a:hover,.md app-link:hover{text-decoration:none;border-bottom:0}.md code:not([class]){color:#de935f;background:#f8f8f8;padding:2px 5px;margin:0 2px;border-radius:2px;white-space:nowrap;font-family:"Roboto Mono",Monaco,courier,monospace}.alert,.md blockquote{padding:.8rem 1rem;margin:0;border-left:4px solid #81a2be;background-color:#f8f8f8;position:relative;border-bottom-right-radius:2px;border-top-right-radius:2px}.alert:before,.md blockquote:before{position:absolute;top:.8rem;left:-12px;color:#fff;background:#81a2be;width:20px;height:20px;border-radius:100%;text-align:center;line-height:20px;font-weight:700;font-size:14px;content:'i'}.alert>p:first-child,.md blockquote>p:first-child{margin-top:0}.alert>p:last-child,.md blockquote>p:last-child{margin-bottom:0}.alert+.alert,.md blockquote+blockquote{margin-top:20px}.md table{border-collapse:collapse;width:100%}.md .responsive{width:100%;overflow-x:auto}.md td,.md th{border:1px solid #c6cbd1;padding:6px 13px}.md tr{border-top:1px solid #c6cbd1}.md .editor{width:100%;height:500px;border:0;border-radius:4px;overflow:hidden}.md h3::before{margin-left:-15px;margin-right:5px;content:'#';color:#81a2be}`,fo=hi`h1{margin:2rem 0 1rem;font-size:2rem}h2{padding-bottom:.3rem;border-bottom:1px solid #ddd}h1,h2,h3,h4,h5{font-weight:400;cursor:pointer}.description{margin-top:10px;color:#333;padding-left:5px}.description img{max-width:100%;height:auto}.description>h1{display:none}`,go=hi`.btn{display:inline-block;outline:0;text-decoration:none;background-color:transparent;border:1px solid #877e87;border-radius:1rem;padding:.375rem 1.5rem;font-weight:700;appearance:none;-webkit-appearance:none;-moz-appearance:none;transition:color .2s cubic-bezier(.08,.52,.52,1),background .2s cubic-bezier(.08,.52,.52,1),border-color .2s cubic-bezier(.08,.52,.52,1);cursor:pointer;color:#444}.btn:hover{background-color:#202428;border-color:#202428;color:#fff}`,mo=hi`.hljs,code[data-filename]{display:block;overflow-x:auto;padding:1rem;background:#1d1f21;border-radius:7px;box-shadow:rgba(0,0,0,.55) 0 11px 11px 0;font-size:.8rem;color:#c5c8c6}.hljs span::selection,.hljs::selection,code[data-filename] span::selection,code[data-filename]::selection{background:#373b41}code[data-filename]{position:relative;padding-top:22px}code[data-filename]:before{position:absolute;top:0;right:0;font-size:.7rem;content:attr(data-filename);padding:2px 6px;border-radius:0 0 0 7px;border-left:1px solid #c5c8c6;border-bottom:1px solid #c5c8c6;color:#fff}.hljs-name,.hljs-title{color:#f0c674}.hljs-comment{color:#707880}.hljs-meta,.hljs-meta .hljs-keyword{color:#f0c674}.hljs-deletion,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol{color:#c66}.hljs-addition,.hljs-doctag,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-string{color:#b5bd68}.hljs-attribute,.hljs-code,.hljs-selector-id{color:#b294bb}.hljs-bullet,.hljs-keyword,.hljs-selector-tag,.hljs-tag{color:#81a2be}.hljs-subst,.hljs-template-tag,.hljs-template-variable,.hljs-variable{color:#8abeb7}.hljs-built_in,.hljs-builtin-name,.hljs-quote,.hljs-section,.hljs-selector-class,.hljs-type{color:#de935f}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}@media (min-width:768px){code[data-filename]{padding-top:1rem}code[data-filename]:before{font-size:inherit;opacity:.5;transition:opacity .5s}code[data-filename]:hover:before{opacity:1}}`,Co=hi`.alert-warning{border-left-color:#856404;background-color:#fff3cd}.alert-warning:before{background:#856404;content:'w'}`;const vo={github:Kn`GitHub icon`,twitter:Kn`Twitter icon`,medium:Kn`Medium icon`};class bo extends pi{constructor(...t){super(...t),dn(this,"year",(new Date).getFullYear())}render(){return Kn``}}dn(bo,"cName","app-footer"),bo.styles=[po,hi`:host{--app-footer-background:#838385;--app-footer-text-color:#fff;--app-footer-text-size:13px;display:block;padding:40px 0;background-color:#303846;font-size:var(--app-footer-text-size);text-align:center;color:var(--app-footer-text-color)}.copyright{white-space:pre-line}.links svg{width:18px;height:18px}.links a{margin:0 5px;text-decoration:none}`];class wo extends pi{constructor(){super(),this.theme="default",this.menu={items:[]},this.Qt=!1}Jt(){this.dispatchEvent(new CustomEvent("toggle-menu",{bubbles:!0,composed:!0}))}Yt(){return"default"===this.theme?Kn`
`:Kn``}te(){this.Qt=!this.Qt}ee(){return"mobile"!==this.theme?null:Kn``}update(t){return t.has("theme")&&(this.Qt="mobile"===this.theme),super.update(t)}render(){return Kn`

Do you like this package?

Support Ukraine 🇺🇦
${this.ee()}
${this.Yt()}
`}}dn(wo,"cName","app-header"),dn(wo,"properties",{menu:{type:Object},theme:{type:String},Qt:{type:Boolean}}),wo.styles=[lo,hi`:host{display:block}app-link{color:#000;text-decoration:none}.header{position:relative;display:flex;align-items:center;justify-content:center;padding:0 10px 0 1rem}.header-notification{background:rgba(84,172,237,.18);display:flex;flex-wrap:wrap;flex-direction:column;align-items:center;padding:10px;gap:0}.header-notification p{margin:0}.logo{padding-top:4px;line-height:1;font-weight:700;font-size:2rem;font-family:"Stardos Stencil","Helvetica Neue",Arial,sans-serif;vertical-align:middle}.logo:hover{border-bottom-color:transparent}.menu-toggle{position:absolute;left:0;background:0 0;border:0;cursor:pointer}.menu-toggle:focus{outline:0}app-menu{margin-left:10px}.full-width-search{position:absolute;right:0;box-sizing:border-box;width:100%;height:100%;transition:width .3s ease-in-out}.full-width-search[compact]{width:35px;padding:0;height:auto}versions-select{vertical-align:middle;margin-left:-5px}@media (min-width:768px){.header{justify-content:space-between}.header-notification{flex-direction:row;justify-content:center;gap:5px}.logo{font-size:3rem}app-quick-search{border-radius:15px;border:1px solid #e3e3e3}versions-select{vertical-align:top;margin-left:-10px}}`];class yo extends pi{constructor(){super(),this.to="",this.active=!1,this.query=null,this.params=null,this.hash="",this.nav=!1,this.ne=null,this.ie=null}oe(){const t=this.se(),{pathname:e}=window.location;return!(t.length>e.length)&&(t===e||e.startsWith(t))}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this.ae.bind(this),!1),this.nav&&(this.ie=io.observe((()=>{this.active=this.oe()}),{initial:!0}))}disconnectedCallback(){super.disconnectedCallback(),this.ie&&this.ie()}update(t){const e=["to","query","params","hash"].some((e=>t.has(e)));if((null===this.ne||e)&&(this.ne=this.ce()),this.nav&&t.has("active")){const t=this.active?"add":"remove";this.classList[t]("active")}return super.update(t)}se(){return this.ne=this.ne||this.ce(),this.ne}ce(){return io.url({name:this.to,hash:this.hash,params:this.params,query:this.query})}render(){return Kn``}ae(t){t.ctrlKey||(t.preventDefault(),io.navigate({url:this.ne}))}}dn(yo,"cName","app-link"),dn(yo,"properties",{to:{type:String},params:{type:Object},query:{type:Object},hash:{type:String},active:{type:Boolean},nav:{type:Boolean}}),yo.styles=hi`:host{display:inline-block;vertical-align:baseline;text-decoration:none;cursor:pointer;border-bottom:2px solid transparent}:host(.active),:host(:hover){border-bottom-color:#81a2be}a{font-size:inherit;color:inherit;text-decoration:inherit}a:hover{text-decoration:inherit}a.active{color:var(--app-link-active-color)}`;class xo extends pi{constructor(){super(),this.items=[]}render(){return Kn``}ue(t,e){const n=t.map((t=>Kn``));return Kn`
    ${n}
`}le({children:t}){return t?this.ue(t,"dropdown "+(this.expanded?"":"expandable")):""}}dn(xo,"cName","app-menu"),dn(xo,"properties",{items:{type:Array},expanded:{type:Boolean}}),xo.styles=hi`:host{display:block}ul{padding:0;margin:0}.dropdown-container{display:inline-block;position:relative;margin:0 1rem}.dropdown-container:hover .dropdown{display:block}.dropdown.expandable{display:none;max-height:calc(100vh - 61px);overflow-y:auto;position:absolute;top:100%;right:-15px;background-color:#fff;border:1px solid #ddd;border-bottom-color:#ccc;border-radius:4px}.dropdown{box-sizing:border-box;padding:10px 0;text-align:left;white-space:nowrap}.dropdown li{display:block;margin:0;line-height:1.6rem}.dropdown li>ul{padding-left:0}.dropdown li:first-child h4{margin-top:0;padding-top:0;border-top:0}.dropdown a,.dropdown app-link,.dropdown h4{padding:0 24px 0 20px}.dropdown h4{margin:.45em 0 0;padding-top:.45rem;border-top:1px solid #eee}.dropdown-container a,.dropdown-container app-link{text-decoration:none}.dropdown a,.dropdown app-link,.nav a,.nav app-link{display:block;color:#202428;text-decoration:none}.dropdown a:hover,.dropdown app-link:hover,.nav a:hover,.nav app-link.active,.nav app-link:hover{color:#81a2be;border-bottom-color:transparent}.link{display:block;cursor:pointer;line-height:40px}.link:after{display:inline-block;content:'';vertical-align:middle;margin-top:-1px;margin-left:6px;margin-right:-14px;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #4f5959}`;class ko extends pi{constructor(){super(),this.article=null,this.category=""}render(){const{article:t}=this,e=this.category||t.categories[0];return Kn`${ao("article.author")} ${t.commentsCount||0}${ao("article.readMore")}`}}dn(ko,"cName","app-article-details"),dn(ko,"properties",{article:{type:Object,attribute:!1},category:{type:String}}),ko.styles=[hi`:host{margin-top:10px;color:var(--app-article-details-color,#999);font-size:11px}:host>*{margin-right:10px}app-link{margin-right:10px;color:var(--app-link-active-color)}app-link>[class^=icon-]{margin-right:5px}`];class Ao extends pi{constructor(){super(),this.he=null,this.de=Cr()}connectedCallback(){super.connectedCallback(),this.he=Zi((t=>{this.de=t,this.reload().then((()=>this.requestUpdate()))}))}disconnectedCallback(){this.he(),super.disconnectedCallback()}reload(){return Promise.reject(new Error(`${this.constructor.cName} should implement "reload" method`))}}function Fo(t){const e=t?`${t} - `:"";document.title=e+vr("name")}function Eo(t,e){if("object"==typeof t)return void Object.keys(t).forEach((e=>Eo(e,t[e])));const n=vr(`meta.${t}`),i=Array.isArray(e)?e.concat(n).join(", "):e||n;(function(t){let e=document.head.querySelector(`meta[name="${t}"]`);return e||(e=document.createElement("meta"),e.setAttribute("name",t),document.head.appendChild(e)),e})(t).setAttribute("content",i.replace(/[\n\r]+/g," "))}function $o({response:t}){const e=document.documentElement;e.lang!==t.params.lang&&(e.lang=t.params.lang);const n=`meta.${t.name}`;lr(n,pr)?(Fo(vr(`${n}.title`)),Eo("keywords",vr(`${n}.keywords`)),Eo("description",vr(`${n}.description`))):(Fo(),Eo("keywords"),Eo("description"))}function jo(t,e){const n=t.getElementById(e);if(!n)return;n.scrollIntoView(!0),document.documentElement.scrollTop-=85}function So(t,e){return er(dr(t.content,e))}class Oo extends Ao{constructor(){super(),this.pe=null,this.nav=[],this.name=null,this.vars={},this.type="page",this.content=So}connectedCallback(){super.connectedCallback(),this.shadowRoot.addEventListener("click",(t=>{!function(t,e){let n;if("H"===e.tagName[0]&&e.id)n=e.id;else{const n=function(t,e){let n=t,i=0;for(;n&&i<3;){if(n.tagName===e)return n;n=n.parentNode,i++}return null}(e,"A"),i=n?n.href.indexOf("#"):-1;-1!==i&&jo(t,n.href.slice(i+1))}if(n){const{location:e}=io.current().response,i=`${e.pathname}${window.location.search}#${n}`;io.navigate({url:i}),jo(t,n)}}(this.shadowRoot,t.target)}),!1)}async updated(t){(null===this.pe||t.has("name")||t.has("type"))&&await this.reload()}async reload(){this.pe=await Kr(this.type).load(Cr(),this.name),function(t){const e=t.meta||{};Fo(t.title),Eo("keywords",e.keywords||""),Eo("description",e.description||"")}(this.pe),await this.updateComplete,function(t){const{hash:e}=io.current().response.location;e?jo(t,e):window.scroll(0,0)}(this.shadowRoot)}ue(){const[t,e]=this.nav;return Kn``}render(){return this.pe?Kn`

${dr(this.pe.title)}

${this.content(this.pe,this.vars)}
${this.nav&&this.nav.length?this.ue():""}`:Kn``}}dn(Oo,"cName","app-page"),dn(Oo,"properties",{type:{type:String},name:{type:String},vars:{type:Object,attribute:!1},content:{type:Function,attribute:!1},nav:{type:Array},pe:{type:Object}}),Oo.styles=[fo,po,mo,hi`:host{display:block}app-page-nav{margin-top:20px}`];class zo extends pi{constructor(){super(),this.next=null,this.prev=null,this.pageType="page"}fe(t){const e=this[t];return e?Kn`${e.title}`:""}render(){return Kn`${this.fe("prev")} ${this.fe("next")}`}}dn(zo,"cName","app-page-nav"),dn(zo,"properties",{next:{type:Object},prev:{type:Object},pageType:{type:String}}),zo.styles=hi`:host{display:block}:host:after{display:table;clear:both;content:''}app-link{color:#81a2be;text-decoration:none}app-link:hover{border-bottom-color:transparent}.next{float:right;margin-left:30px}.next:after,.prev:before{display:inline-block;vertical-align:middle;content:'⇢'}.prev:before{content:'⇠'}`;const Mo=["isomorphic","versatile","declarative","typesafe","treeshakable"];function Do(t){return Kn`

${ao(`features.${t}.title`)}

${co(`features.${t}.description`)}

`}const To=()=>Kn`
${Mo.map(Do)}
`;To.styles=[hi`.features{padding:1rem 0;display:-ms-grid;display:grid;justify-content:center;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));-ms-grid-columns:${li(Mo.map((()=>"minmax(200px, 1fr)")).join(" "))}}.feature{padding:1rem}.feature h3{font-size:1.4rem}.feature p:last-child{margin-bottom:0}`];class Lo extends pi{render(){return Kn`

${ao("slogan")}

${ao("buttons.start")}${ao("buttons.source")}
${co("exampleCode")}
${To()}`}}dn(Lo,"cName","home-page"),Lo.styles=[lo,go,To.styles,mo,hi`:host{display:block}.bg{background:#fff;background:linear-gradient(90deg,#fff 0,#dee4ea 41%,#ebf5fd 60%,#525457 100%)}header{justify-content:center;padding:2rem 1rem}.main{padding-top:22px;text-align:center;justify-content:center}h1{white-space:pre-line;font-size:2.2rem;font-family:"Stardos Stencil","Helvetica Neue",Arial,sans-serif}.buttons{display:inline-block;text-align:center}.buttons app-link{margin-right:5px}github-button{display:block;margin-top:10px}.details{min-width:300px}.col-example{display:none}@media (min-width:768px){.main>img{margin-right:30px}}@media (min-width:1024px){.main{text-align:left}.col-example{display:block}.example code{font-size:.7rem}}@media (min-width:1200px){.example code{font-size:.8rem}}`];var _o=window.document,No=window.Math,Bo=window.HTMLElement,Io=window.XMLHttpRequest,qo=function(t){return function(e,n,i){var r=t.createElement(e);if(null!=n)for(var o in n){var s=n[o];null!=s&&(null!=r[o]?r[o]=s:r.setAttribute(o,s))}if(null!=i)for(var a=0,c=i.length;a'}}},download:{heights:{16:{width:16,path:''}}},eye:{heights:{16:{width:16,path:''}}},heart:{heights:{16:{width:16,path:''}}},"issue-opened":{heights:{16:{width:16,path:''}}},"mark-github":{heights:{16:{width:16,path:''}}},package:{heights:{16:{width:16,path:''}}},play:{heights:{16:{width:16,path:''}}},"repo-forked":{heights:{16:{width:16,path:''}}},"repo-template":{heights:{16:{width:16,path:''}}},star:{heights:{16:{width:16,path:''}}}},Yo=function(t,e){t=Vo(t).replace(/^octicon-/,""),Uo(Jo,t)||(t="mark-github");var n=e>=24&&24 in Jo[t].heights?24:16,i=Jo[t].heights[n];return'"},ts={},es=function(t,e){var n=ts[t]||(ts[t]=[]);if(!(n.push(e)>1)){var i=function(t){var e;return function(){e||(e=1,t.apply(this,arguments))}}((function(){for(delete ts[t];e=n.shift();)e.apply(null,arguments)}));if(Go){var r=new Io;Zo(r,"abort",i),Zo(r,"error",i),Zo(r,"load",(function(){var t;try{t=JSON.parse(this.responseText)}catch(t){return void i(t)}i(200!==this.status,t)})),r.open("GET",t),r.send()}else{var o=this||window;o.ge=function(t){o.ge=null,i(200!==t.meta.status,t.data)};var s=qo(o.document)("script",{async:!0,src:t+(-1!==t.indexOf("?")?"&":"?")+"callback=_"}),a=function(){o.ge&&o.ge({meta:{}})};Zo(s,"load",a),Zo(s,"error",a),s.readyState&&function(t,e,n){var i="readystatechange",r=function(){if(e.test(t.readyState))return Xo(t,i,r),n.apply(this,arguments)};Zo(t,i,r)}(s,/de|m/,a),o.document.getElementsByTagName("head")[0].appendChild(s)}}},ns=function(t,e,n){var i=qo(t.ownerDocument),r=t.appendChild(i("style",{type:"text/css"})),o="body{margin:0}a{text-decoration:none;outline:0}.widget{display:inline-block;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:0;line-height:0;white-space:nowrap}.btn,.social-count{position:relative;display:inline-block;height:14px;padding:2px 5px;font-size:11px;font-weight:600;line-height:14px;vertical-align:bottom;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-repeat:repeat-x;background-position:-1px -1px;background-size:110% 110%;border:1px solid}.btn{border-radius:.25em}.btn:not(:last-child){border-radius:.25em 0 0 .25em}.social-count{border-left:0;border-radius:0 .25em .25em 0}.widget-lg .btn,.widget-lg .social-count{height:20px;padding:3px 10px;font-size:12px;line-height:20px}.octicon{display:inline-block;vertical-align:text-top;fill:currentColor}"+Qo(e["data-color-scheme"]);r.styleSheet?r.styleSheet.cssText=o:r.appendChild(t.ownerDocument.createTextNode(o));var s="large"===Vo(e["data-size"]),a=i("a",{className:"btn",href:e.href,rel:"noopener",target:"_blank",title:e.title||void 0,"aria-label":e["aria-label"]||void 0,innerHTML:Yo(e["data-icon"],s?16:14)},[" ",i("span",{},[e["data-text"]||""])]),c=t.appendChild(i("div",{className:"widget"+(s?" widget-lg":"")},[a])),u=a.hostname.replace(/\.$/,"");if(("."+u).substring(u.length-Ro.length)!=="."+Ro)return a.removeAttribute("href"),void n(c);var l=(" /"+a.pathname).split(/\/+/);if(((u===Ro||u==="gist."+Ro)&&"archive"===l[3]||u===Ro&&"releases"===l[3]&&("download"===l[4]||"latest"===l[4]&&"download"===l[5])||u==="codeload."+Ro)&&(a.target="_top"),"true"===Vo(e["data-show-count"])&&u===Ro&&"marketplace"!==l[1]&&"sponsors"!==l[1]&&"orgs"!==l[1]&&"users"!==l[1]&&"-"!==l[1]){var h,d;if(!l[2]&&l[1])d="followers",h="?tab=followers";else if(!l[3]&&l[2])d="stargazers_count",h="/stargazers";else if(l[4]||"subscription"!==l[3])if(l[4]||"fork"!==l[3]){if("issues"!==l[3])return void n(c);d="open_issues_count",h="/issues"}else d="forks_count",h="/network/members";else d="subscribers_count",h="/watchers";var p=l[2]?"/repos/"+l[1]+"/"+l[2]:"/users/"+l[1];es.call(this,"https://api.github.com"+p,(function(t,e){if(!t){var r=e[d];c.appendChild(i("a",{className:"social-count",href:e.html_url+h,rel:"noopener",target:"_blank","aria-label":r+" "+d.replace(/_count$/,"").replace("_"," ").slice(0,r<2?-1:void 0)+" on GitHub"},[(""+r).replace(/\B(?=(\d{3})+(?!\d))/g,",")]))}n(c)}))}else n(c)},is=window.devicePixelRatio||1,rs=function(t){return(is>1?No.ceil(No.round(t*is)/is*2)/2:No.ceil(t))||0},os=function(t,e){t.style.width=e[0]+"px",t.style.height=e[1]+"px"},ss=function(t,e){if(null!=t&&null!=e)if(t.getAttribute&&(t=function(t){for(var e={href:t.href,title:t.title,"aria-label":t.getAttribute("aria-label")},n=["icon","color-scheme","text","size","show-count"],i=0,r=n.length;i{this.shadowRoot.firstChild?this.shadowRoot.replaceChild(t,this.shadowRoot.firstChild):this.shadowRoot.appendChild(t)}))}}dn(as,"cName","github-button"),dn(as,"properties",{href:{type:String},size:{type:String},theme:{type:String},showCount:{type:Boolean},text:{type:String}});const cs={dropdown(t){const e=t.hints.title||t.doc.title,n=t.hints.headings||t.doc.headings||[];return Kn`
${er(e)}
${n.map((e=>Kn`${er(e.title)}`))}
`},page(t){const e=t.hints.title||t.doc.title,n=t.hints.headings||t.doc.headings||[];return Kn`${n.map((n=>Kn`${er(`${e} › ${n.title}`)}`))}`}};const us=Kn``,ls=Kn``;class hs extends pi{constructor(){super(),this.value="",this.suggestionsType="dropdown",this.compact=!1,this.toggler=!1,this.Ce=null,this.ve=this.ve.bind(this),this.be=function(t,e){let n;return function(...i){clearTimeout(n),n=setTimeout((()=>t.apply(this,i)),e)}}(this.be,500),this.ie=null}we(t){this.value=t.trim(),this.dispatchEvent(new CustomEvent("update",{detail:this.value}))}connectedCallback(){super.connectedCallback(),document.addEventListener("click",this.ve,!1),this.ie=io.observe((()=>this.ye()))}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("click",this.ve,!1),this.ie()}ye(){this.value&&(this.we(""),this.Ce=null,this.dispatchEvent(new CustomEvent("reset")))}ve(t){this.shadowRoot.contains(t.target)||(this.Ce=null)}async be(){if(!this.value)return void(this.Ce=null);const t=(await Kr("page").search(Cr(),this.value,{prefix:!0})).reduce(((t,e)=>{const n=e.doc.categories[0];return t.has(n)||t.set(n,[]),t.get(n).push(e),t}),new Map);this.Ce=Array.from(t)}xe(t){this.we(t.target.value),this.be()}ke(){this.dispatchEvent(new CustomEvent("click-icon"))}render(){return Kn`
${function(t,e){if(!t)return"";if(!t.length)return Kn`
${ao("search.noMatch")}
`;const n=cs[e||"dropdown"];return Kn`
${t.map((([t,e])=>Kn`
${ao(`categories.${t}`)}
${e.map(n)}`))}
`}(this.Ce,this.suggestionsType)}
`}}dn(hs,"cName","app-quick-search"),dn(hs,"properties",{value:{type:String},suggestionsType:{type:String},compact:{type:Boolean},toggler:{type:Boolean},Ce:{type:Array}}),hs.styles=[lo,hi`:host{display:block}.search-form{position:relative;border-radius:inherit;height:100%}.input{display:block;padding:1px 6px;color:#273849;transition:border-color 1s;white-space:nowrap;background:#fff;height:100%;border-radius:inherit}svg{width:16px;height:16px}.icon{line-height:.7;cursor:pointer}.icon,input{display:inline-block;vertical-align:middle}.input path{fill:#e3e3e3}input{height:100%;font-size:.9rem;box-sizing:border-box;outline:0;width:calc(100% - 20px);margin-left:5px;border:0;background-color:transparent}.suggestions{position:absolute;left:8px;z-index:1000;top:120%;background:#fff;padding:5px;overflow-y:auto}.suggestions.dropdown{border-radius:4px;border:1px solid #e3e3e3;width:500px;max-height:500px}.suggestions.page{left:-10px;width:101%;height:calc(100vh - 50px);border:0;border-radius:0}input:focus{outline:transparent}h5{margin:0;padding:5px 10px;background-color:#1b1f23;color:#fff}app-link{display:block;padding:5px;font-size:.9rem;border-bottom:0}app-link:hover{background:#eee}.title{flex-basis:40%;max-width:40%;border-right:1px solid #e3e3e3}.item{border-bottom:1px solid #e3e3e3}mark{font-weight:700;background:0 0}.compact .input{border-color:transparent;background:0 0}.compact input{display:none}.compact .input path{fill:#1b1f23}`];class ds extends pi{render(){return Kn``}Ae(t){const e=t.target.value,n=io.current().response;io.navigate({url:io.url({name:n.name,params:{...n.params,lang:e},query:n.location.query,hash:n.location.hash})})}}dn(ds,"cName","app-lang-picker");const ps={liqpay:{icon:"data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20width%3D%22107px%22%20height%3D%2222px%22%20viewBox%3D%220%200%20107%2022%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%20%20%20%20%20%20%20%20%3Ctitle%3EF598AEA9-571B-4BDB-8FEC-38F074CC2EC6%3C%2Ftitle%3E%20%20%20%20%3Cdesc%3ECreated%20with%20sketchtool.%3C%2Fdesc%3E%20%20%20%20%3Cdefs%3E%3C%2Fdefs%3E%20%20%20%20%3Cg%20id%3D%22Personal%22%20stroke%3D%22none%22%20stroke-width%3D%221%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%20%20%20%20%20%20%20%20%3Cg%20id%3D%22Site_Personal-Copy%22%20transform%3D%22translate%28-60.000000%2C%20-12.000000%29%22%20fill%3D%22%237AB72B%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Cg%20id%3D%22Header%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cg%20id%3D%22logo_liqpay%22%20transform%3D%22translate%2860.000000%2C%2012.000000%29%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20points%3D%2286.9547861%201.77262293%2094.3504229%2010.3403775%2086.9547861%2018.9094274%2089.0061259%2020.6791964%2097.9295835%2010.3403775%2089.0061259%200.000910899696%22%3E%3C%2Fpolygon%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20points%3D%2295.9493035%201.77262293%20103.344617%2010.3403775%2095.9493035%2018.9094274%2097.9999958%2020.6791964%20106.923777%2010.3403775%2097.9999958%200.000910899696%22%3E%3C%2Fpolygon%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M9.24568572%2C18.2702718%20C9.24568572%2C18.4533859%209.23654857%2C18.6068499%209.21827428%2C18.7303379%20C9.19967369%2C18.8541517%209.16997797%2C18.9593934%209.12886088%2C19.0463889%20C9.08741743%2C19.1337102%209.03716313%2C19.1975721%208.97744546%2C19.2386262%20C8.91772771%2C19.280006%208.8469149%2C19.300533%208.76435437%2C19.300533%20L0.894994994%2C19.300533%20C0.68386186%2C19.300533%200.484476477%2C19.2298288%200.296512512%2C19.0877688%20C0.108222222%2C18.9457087%200.0142402401%2C18.6961261%200.0142402401%2C18.339021%20L0.0142402401%2C1.88286186%20C0.0142402401%2C1.80955105%200.0325145146%2C1.74536336%200.0693893895%2C1.69062462%20C0.105937938%2C1.63556006%200.170224224%2C1.59222523%200.261921922%2C1.55996847%20C0.353619619%2C1.52803754%200.477297297%2C1.50066817%200.633281284%2C1.47753454%20C0.789265269%2C1.45505255%200.977229228%2C1.44332282%201.1974995%2C1.44332282%20C1.42658058%2C1.44332282%201.61682883%2C1.45505255%201.76824425%2C1.47753454%20C1.91965966%2C1.50066817%202.04105306%2C1.52803754%202.13307708%2C1.55996847%20C2.22444845%2C1.59222523%202.28906106%2C1.63556006%202.32560961%2C1.69062462%20C2.36215816%2C1.74568919%202.38075876%2C1.80955105%202.38075876%2C1.88286186%20L2.38075876%2C17.254021%20L8.76435437%2C17.254021%20C8.8469149%2C17.254021%208.91772771%2C17.274548%208.97744546%2C17.3159279%20C9.03683683%2C17.3573078%209.08741743%2C17.4166081%209.12886088%2C17.4941546%20C9.17030434%2C17.5720271%209.19999999%2C17.674988%209.21827428%2C17.8033634%20C9.23654857%2C17.9317387%209.24568572%2C18.0871576%209.24568572%2C18.2702718%20L9.24568572%2C18.2702718%20L9.24568572%2C18.2702718%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M14.2257518%2C18.9434279%20C14.2257518%2C19.0170646%2014.2071512%2C19.0809264%2014.1706026%2C19.1356651%20C14.1337277%2C19.1907297%2014.0694415%2C19.2340646%2013.9780701%2C19.2663214%20C13.886046%2C19.2985781%2013.764979%2C19.3256216%2013.6132373%2C19.3487553%20C13.4618218%2C19.3712372%2013.2715735%2C19.3829669%2013.0424925%2C19.3829669%20C12.8222222%2C19.3829669%2012.6339319%2C19.3712372%2012.4782743%2C19.3487553%20C12.3222903%2C19.3256216%2012.1986126%2C19.2982522%2012.1069149%2C19.2663214%20C12.0152172%2C19.2340646%2011.950931%2C19.1907297%2011.9143824%2C19.1356651%20C11.8775075%2C19.0806006%2011.8592332%2C19.0170646%2011.8592332%2C18.9434279%20L11.8592332%2C1.88286186%20C11.8592332%2C1.80955105%2011.8797918%2C1.74536336%2011.9212352%2C1.69062462%20C11.9626787%2C1.63556006%2012.0312072%2C1.59222523%2012.1274735%2C1.55996847%20C12.2237397%2C1.52803754%2012.3477437%2C1.50066817%2012.4988328%2C1.47753454%20C12.6502483%2C1.45505255%2012.8310331%2C1.44332282%2013.0424925%2C1.44332282%20C13.2715735%2C1.44332282%2013.4618218%2C1.45505255%2013.6132373%2C1.47753454%20C13.7646526%2C1.50066817%2013.886046%2C1.52803754%2013.9780701%2C1.55996847%20C14.0694415%2C1.59222523%2014.1340541%2C1.63556006%2014.1706026%2C1.69062462%20C14.2071512%2C1.74568919%2014.2257518%2C1.80955105%2014.2257518%2C1.88286186%20L14.2257518%2C18.9434279%20L14.2257518%2C18.9434279%20L14.2257518%2C18.9434279%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M36.0592673%2C20.8664519%20C36.0592673%2C21.0769354%2036.0478459%2C21.2532072%2036.025003%2C21.3949414%20C36.0018338%2C21.5370015%2035.9675696%2C21.6468048%2035.9218839%2C21.7246772%20C35.8758718%2C21.8022237%2035.8256176%2C21.8553334%2035.7704684%2C21.8827027%20C35.7153194%2C21.9100721%2035.6601702%2C21.9240826%2035.6053474%2C21.9240826%20C35.4219519%2C21.9240826%2035.1259739%2C21.848491%2034.7180661%2C21.6976336%20C34.3101582%2C21.5467763%2033.8399219%2C21.326518%2033.30801%2C21.038488%20C32.7760981%2C20.7498063%2032.2073113%2C20.3995435%2031.601976%2C19.9873738%20C30.9966406%2C19.5752042%2030.4095796%2C19.0946111%2029.8411191%2C18.5449429%20C29.3917678%2C18.8196141%2028.822981%2C19.0577928%2028.1350851%2C19.2591531%20C27.4471892%2C19.4605135%2026.6493213%2C19.5615195%2025.7411552%2C19.5615195%20C24.4019119%2C19.5615195%2023.2441061%2C19.3643949%2022.2674114%2C18.9707973%20C21.2907167%2C18.5771997%2020.4833854%2C18.0001622%2019.8460701%2C17.2400105%20C19.2084285%2C16.4798588%2018.73395%2C15.5346382%2018.421982%2C14.4036967%20C18.110014%2C13.2727553%2017.9543563%2C11.9746651%2017.9543563%2C10.5094265%20C17.9543563%2C9.09925229%2018.1240461%2C7.82396997%2018.4634254%2C6.6839054%20C18.8028048%2C5.54384084%2019.3118739%2C4.57320571%2019.9906327%2C3.77167418%20C20.6693914%2C2.97046846%2021.5178398%2C2.35237688%2022.5356516%2C1.9173994%20C23.5537898%2C1.48242192%2024.7412913%2C1.26477027%2026.0988088%2C1.26477027%20C27.3734395%2C1.26477027%2028.495023%2C1.46189489%2029.4625806%2C1.85549249%20C30.4301382%2C2.24941592%2031.2417117%2C2.82417268%2031.8976276%2C3.57943694%20C32.5532172%2C4.33502703%2033.0462963%2C5.26688889%2033.3765385%2C6.37469669%20C33.7067808%2C7.48283033%2033.8719019%2C8.7558318%2033.8719019%2C10.1933754%20C33.8719019%2C10.9352808%2033.8281742%2C11.6449294%2033.7410451%2C12.3226472%20C33.6539159%2C13.0006907%2033.5162062%2C13.6415901%2033.3285686%2C14.245997%20C33.1402783%2C14.8504039%2032.904018%2C15.4088694%2032.6201141%2C15.9217192%20C32.3355576%2C16.4348949%2032.0007467%2C16.896916%2031.6156817%2C17.3090856%20C32.284977%2C17.8584279%2032.872038%2C18.2868889%2033.3765385%2C18.593491%20C33.8807127%2C18.9004189%2034.2984104%2C19.1317552%2034.6283263%2C19.2871742%20C34.9585686%2C19.442919%2035.215061%2C19.555003%2035.3987828%2C19.6234265%20C35.5818518%2C19.6921757%2035.7195616%2C19.770048%2035.8115856%2C19.8570436%20C35.902957%2C19.9437132%2035.9675696%2C20.067527%2036.0041181%2C20.2278334%20C36.0406667%2C20.3878138%2036.0592673%2C20.6009039%2036.0592673%2C20.8664519%20L36.0592673%2C20.8664519%20L36.0592673%2C20.8664519%20Z%20M31.3817057%2C10.3582433%20C31.3817057%2C9.35078979%2031.2922923%2C8.41697296%2031.1134655%2C7.55581531%20C30.9346386%2C6.69498349%2030.6363764%2C5.94656156%2030.219005%2C5.3098979%20C29.8016336%2C4.67356006%2029.2442683%2C4.17667568%2028.5475616%2C3.81957057%20C27.8505285%2C3.46246547%2026.9883744%2C3.28391292%2025.9610991%2C3.28391292%20C24.9338238%2C3.28391292%2024.0716697%2C3.47386937%2023.3746366%2C3.85410811%20C22.6776036%2C4.23434685%2022.1111011%2C4.74687087%2021.6754555%2C5.39265766%20C21.2398098%2C6.03811862%2020.9278418%2C6.78686637%2020.7398779%2C7.63857508%20C20.5519139%2C8.49028381%2020.4576056%2C9.39216967%2020.4576056%2C10.3448844%20C20.4576056%2C11.3888304%2020.5447347%2C12.3480616%2020.718993%2C13.2225781%20C20.8932512%2C14.0970946%2021.1866186%2C14.8552913%2021.5994214%2C15.4961907%20C22.0122242%2C16.1374159%2022.5646947%2C16.6343003%2023.2571591%2C16.986518%20C23.9496237%2C17.3390615%2024.8186306%2C17.5153334%2025.8641802%2C17.5153334%20C26.9005926%2C17.5153334%2027.7718839%2C17.3230961%2028.4780541%2C16.9386216%20C29.1842242%2C16.5541471%2029.7526847%2C16.034455%2030.1840881%2C15.3795451%20C30.6151652%2C14.724961%2030.9222382%2C13.9644835%2031.1059599%2C13.0994159%20C31.290008%2C12.2333708%2031.3817057%2C11.3197553%2031.3817057%2C10.3582433%20L31.3817057%2C10.3582433%20L31.3817057%2C10.3582433%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M48.8538698%2C6.7318018%20C48.8538698%2C7.62032883%2048.7070231%2C8.42153453%2048.4136556%2C9.13574474%20C48.1199619%2C9.85028075%2047.7006326%2C10.4592492%2047.155015%2C10.9626502%20C46.6093974%2C11.4663769%2045.9394495%2C11.8554129%2045.1461501%2C12.1300841%20C44.3528509%2C12.4047552%2043.4058519%2C12.5422538%2042.3054795%2C12.5422538%20L40.2829089%2C12.5422538%20L40.2829089%2C18.9434279%20C40.2829089%2C19.0170646%2040.2623504%2C19.0809264%2040.2209069%2C19.1356651%20C40.1794634%2C19.1907297%2040.1155035%2C19.2340646%2040.0283744%2C19.2663214%20C39.9412453%2C19.2985781%2039.8221362%2C19.3256216%2039.6707207%2C19.3487553%20C39.5193053%2C19.3712372%2039.3290571%2C19.3829669%2039.099976%2C19.3829669%20C38.8705686%2C19.3829669%2038.6803203%2C19.3712372%2038.5289049%2C19.3487553%20C38.3774895%2C19.3256216%2038.2557697%2C19.2982522%2038.1640721%2C19.2663214%20C38.0723744%2C19.2340646%2038.0080881%2C19.1907297%2037.9715396%2C19.1356651%20C37.9346647%2C19.0806006%2037.9163904%2C19.0170646%2037.9163904%2C18.9434279%20L37.9163904%2C2.54200751%20C37.9163904%2C2.17577928%2038.0126566%2C1.91479279%2038.2051892%2C1.75904805%20C38.3977217%2C1.6033033%2038.6130971%2C1.52543093%2038.8519679%2C1.52543093%20L42.6628068%2C1.52543093%20C43.0481982%2C1.52543093%2043.4172733%2C1.54139639%2043.7703584%2C1.57365315%20C44.1234435%2C1.60590991%2044.5404885%2C1.67433333%2045.0221461%2C1.77957507%20C45.5034775%2C1.88514264%2045.9942723%2C2.08194144%2046.4942042%2C2.3702973%20C46.9938098%2C2.65865315%2047.4180341%2C3.01380331%2047.7668769%2C3.43477027%20C48.1153934%2C3.85606306%2048.3836336%2C4.34382432%2048.5715976%2C4.89772823%20C48.7595616%2C5.45228378%2048.8538698%2C6.06353303%2048.8538698%2C6.7318018%20L48.8538698%2C6.7318018%20L48.8538698%2C6.7318018%20Z%20M46.3636737%2C6.92403904%20C46.3636737%2C6.20070571%2046.2282483%2C5.5962988%2045.9577237%2C5.11049249%20C45.6871992%2C4.62533784%2045.3523884%2C4.26367117%2044.9532913%2C4.02549249%20C44.5545205%2C3.78731381%2044.1417177%2C3.63645646%2043.7152092%2C3.57226877%20C43.2887007%2C3.50840691%2042.8736136%2C3.47615015%2042.469948%2C3.47615015%20L40.2825826%2C3.47615015%20L40.2825826%2C10.6052192%20L42.4151251%2C10.6052192%20C43.1307588%2C10.6052192%2043.7243464%2C10.513988%2044.1968669%2C10.3305481%20C44.6690611%2C10.1477598%2045.0658739%2C9.89361563%2045.386979%2C9.56811561%20C45.7080841%2C9.24326726%2045.9508708%2C8.8539054%2046.1163183%2C8.40068168%20C46.2811131%2C7.94745795%2046.3636737%2C7.45513513%2046.3636737%2C6.92403904%20L46.3636737%2C6.92403904%20L46.3636737%2C6.92403904%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M65.8029329%2C18.4628348%20C65.87603%2C18.664521%2065.9151892%2C18.8267823%2065.9197578%2C18.9505961%20C65.924%2C19.0744099%2065.8897357%2C19.1682478%2065.8166386%2C19.2324354%20C65.7432153%2C19.2962973%2065.6218218%2C19.3373513%2065.4521321%2C19.3559234%20C65.2821161%2C19.3741697%2065.0553193%2C19.3836186%2064.7710891%2C19.3836186%20C64.4868588%2C19.3836186%2064.2597357%2C19.3767762%2064.090046%2C19.3630916%20C63.9203564%2C19.3494069%2063.7917838%2C19.3262733%2063.704981%2C19.2943423%20C63.6175255%2C19.2624114%2063.5535656%2C19.2187508%2063.5124484%2C19.164012%20C63.471005%2C19.1089475%2063.4321722%2C19.0401982%2063.3956237%2C18.9580901%20L61.8684164%2C14.6311231%20L54.4666827%2C14.6311231%20L53.0083303%2C18.9030256%20C52.9805926%2C18.9854595%2052.9440441%2C19.0568153%2052.898032%2C19.1157898%20C52.85202%2C19.1754159%2052.7857758%2C19.2259189%2052.6986467%2C19.2669729%20C52.6115176%2C19.308027%2052.4875135%2C19.3376772%2052.3272873%2C19.3562493%20C52.1667347%2C19.3744955%2051.9578859%2C19.3839445%2051.7013934%2C19.3839445%20C51.4354375%2C19.3839445%2051.2174514%2C19.3722147%2051.0480881%2C19.3497327%20C50.8783984%2C19.3265991%2050.7592893%2C19.2832643%2050.6904344%2C19.2190766%20C50.6219059%2C19.1552147%2050.5892733%2C19.061051%2050.5941682%2C18.9375631%20C50.5987367%2C18.8137492%2050.6375695%2C18.6511622%2050.710993%2C18.4498018%20L56.6817858%2C1.93857808%20C56.7183344%2C1.8378979%2056.7666306%2C1.75546396%2056.826022%2C1.69127628%20C56.8854134%2C1.62708859%2056.9728689%2C1.57658558%2057.0874094%2C1.54009309%20C57.2019499%2C1.5036006%2057.3487968%2C1.47818619%2057.5276236%2C1.4645015%20C57.7061241%2C1.45081682%2057.9335736%2C1.44397448%2058.2086667%2C1.44397448%20C58.5020341%2C1.44397448%2058.7451472%2C1.45081682%2058.938006%2C1.4645015%20C59.1305386%2C1.47818619%2059.2865225%2C1.5036006%2059.4056316%2C1.54009309%20C59.5247407%2C1.57691141%2059.6164384%2C1.62936937%2059.6807247%2C1.69811862%20C59.7446847%2C1.76686787%2059.7952653%2C1.85158258%2059.8321402%2C1.95226276%20L65.8029329%2C18.4628348%20L65.8029329%2C18.4628348%20L65.8029329%2C18.4628348%20Z%20M58.1398118%2C3.88831982%20L58.1261061%2C3.88831982%20L55.0583123%2C12.7481757%20L61.2490491%2C12.7481757%20L58.1398118%2C3.88831982%20L58.1398118%2C3.88831982%20L58.1398118%2C3.88831982%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M74.4424224%2C12.3910706%20L74.4424224%2C18.9431021%20C74.4424224%2C19.0167388%2074.4241481%2C19.0806006%2074.3875996%2C19.1353393%20C74.351051%2C19.1904039%2074.2870911%2C19.2337387%2074.1960461%2C19.2659955%20C74.105001%2C19.2982522%2073.9816497%2C19.3252958%2073.8266446%2C19.3484295%20C73.6716396%2C19.3709114%2073.4846547%2C19.3826411%2073.266016%2C19.3826411%20C73.0379139%2C19.3826411%2072.8489709%2C19.3709114%2072.6982082%2C19.3484295%20C72.5477718%2C19.3252958%2072.4244204%2C19.2979264%2072.3288068%2C19.2659955%20C72.2328668%2C19.2337387%2072.166949%2C19.1904039%2072.1304004%2C19.1353393%20C72.0938519%2C19.0802747%2072.0759039%2C19.0167388%2072.0759039%2C18.9431021%20L72.0759039%2C12.3910706%20L67.0406887%2C2.36345496%20C66.9395275%2C2.15297147%2066.8775255%2C1.98810361%2066.855009%2C1.86885135%20C66.8318399%2C1.74992492%2066.855009%2C1.65836787%2066.9238638%2C1.59418018%20C66.9923924%2C1.53031832%2067.1163964%2C1.48926426%2067.2952232%2C1.4706922%20C67.4740501%2C1.45244595%2067.7145525%2C1.442997%2068.0173834%2C1.442997%20C68.2924765%2C1.442997%2068.5147047%2C1.45244595%2068.6847207%2C1.4706922%20C68.8544104%2C1.48926426%2068.9895095%2C1.51435285%2069.0906706%2C1.54628379%20C69.1915055%2C1.57854054%2069.2672132%2C1.62415616%2069.3174674%2C1.68378228%20C69.368048%2C1.7434084%2069.416018%2C1.819%2069.46203%2C1.91023123%20L71.9244885%2C7.02015766%20C72.1529169%2C7.50563814%2072.3813453%2C8.01392643%2072.6091212%2C8.54502253%20C72.8368969%2C9.07611859%2073.0695676%2C9.61177629%2073.3068068%2C10.1519955%20L73.3342182%2C10.1519955%20C73.5437198%2C9.63002255%2073.7600741%2C9.11065613%2073.9839339%2C8.5929189%20C74.2071411%2C8.07583333%2074.4332853%2C7.56526426%2074.6623664%2C7.06153753%20L77.1385308%2C1.92424174%20C77.1662681%2C1.83268469%2077.2051011%2C1.75481231%2077.255682%2C1.69062462%20C77.305936%2C1.62676277%2077.3744646%2C1.57854054%2077.46192%2C1.54628379%20C77.5490494%2C1.51435285%2077.6704426%2C1.48926426%2077.8264267%2C1.4706922%20C77.9824108%2C1.45244595%2078.1795116%2C1.442997%2078.4180559%2C1.442997%20C78.7482979%2C1.442997%2079.0074014%2C1.45472673%2079.1953657%2C1.47720871%20C79.3833291%2C1.50034235%2079.5138597%2C1.54367718%2079.5876096%2C1.60786487%20C79.6613595%2C1.67205255%2079.68616%2C1.76360961%2079.6633171%2C1.88253604%20C79.6404743%2C2.00178829%2079.5784723%2C2.16176877%2079.4776374%2C2.36312913%20L74.4424224%2C12.3910706%20L74.4424224%2C12.3910706%20L74.4424224%2C12.3910706%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fg%3E%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fg%3E%20%20%20%20%20%20%20%20%3C%2Fg%3E%20%20%20%20%3C%2Fg%3E%3C%2Fsvg%3E",image:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOYAAADkAQMAAAC2bMrzAAAABlBMVEX///8AAABVwtN+AAACK0lEQVRYw9XYMY7mIAyG4TeioOQIPgo3I8nNOApHoKSw8m1B5t+Z7VfrRSkiPWkibLANf21lSXqyAKemWTVxuyVJV1QdQAOoFFGU1N3uBVhcPTVaHkny0pO6UzWOZVrRVWmSZqV0qG73f6GaVVKSKJ3wCjSM0h300R9xFU13hg4v/ffzZ/4G03dZmtWLNPHS3a6fB2IwzdKi5QHV2cHTsYc3ckIqtDyOZQCgWZ2KPXBq8M806/OdU730JEHD7sA69pu+zuc0q8axOPY9GFGxBxposg86L3IOacdGSM26NYA0a5o1qXuRdMfWcWicC0rfYeNFTmPnZUzFrjzIoojS9/WddC8adgXVrAt78tAE8NKdCg2Onb8RdZ+EEkVpsmvRNI5Fy7qiql15NEzqSX3/VNKD3YqrO0TMS6cIkHoap/TkvQsBNete9rwVnfYZ7jQssGIPHMso8tL19oNPHsTVrFujQZIAQOpuV5YWgXXZvcy3ld0PttAKx6LB3gJKp8g511eGRlW7spL6Lp69vBmKhVV7siSlWSlKklOxK+srQwNqHqfGoZHmuxEOaYfNV1f+DxQab2w4+x4Upk+XGlMBsnw3VrtPsevT8UXUPQ0AqFL30gHsfnMwqA6gQZpVu+aHpAu7vs8Yo+mp0QCql3e65Sbp+uRgUM3DYdf8aVbplt5dCKwCnOr77uaU7gVhFWhZSdLEQZLGuXvEqPpOET8T5jTx3Vt9mzHG0pDrFxd5veytOF4pAAAAAElFTkSuQmCC"},mono:{icon:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHAAAAAWCAMAAAAvk+g+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAADPUExURQAAAPv7+/T09Lm5uf////z8/OLi4v7+/v39/QICAnt7e7S0tPDw8Pb29uvr63V1dRgYGKSkpNvb2+np6cDAwAgICOXl5VZWVsrKytXV1W5ubjMzM6enp/r6+sfHx+fn5/Ly8t/f38/Pz+7u7g4ODs3NzYWFhZmZmUFBQR4eHpGRkQUFBcTExLy8vJ2dndHR0To6Oq2trZKSktjY2BQUFKCgoICAgEhISI6OjrGwsSIiIltbW/79/i4uLiYmJk1NTaqqqpaWlmZmZmFhYYmJiVdCR2MAAAM3SURBVEjHvdbZkqJKEAbgH6EqM1EEUXBFcBC13fe1215m3v+ZzkWrrSfOuZmI7rygCCqivoDgryzQrXI5pu8vXG/U5KU5VkRkqJ8BwyfgXKao9doIfwQ0AUiF3wWw+QdAXgAQ0w8ANJ1vBjlr9AtjAFI7AEDV+IuF6psaWdZ/TvG4tCLrDoyPgF14Baq5NwDY/M0nNVH6X3CIinUP1gSQTrjfhyoToJpGyRfJD8PdKs+XZ8x8Adki67OILhciIouW/wIzAFIj9t/y4eH3sjzeHfuXbMymtaxnT6L21m4zcbqw3VaZKZ7mO+/uMiRSeuNu8zkmE5vx1p5ERMnkT2OfMTnTabnk/lkRLVHhaDGd8AVMXwDpqMUacs5ItbsAOp9gHoPAw8jtrmUdUriTblfmPvmYH59Efkf864h1gN8pmWiOPMi7Uo3RfC6jCicIBl4gzZSHqBglnNLbTzN+kr1TAgAMCtEJAFZXsOoXP9DQ8Ssy3sq2XN6jYfh4aRdqI6TODptUf2BDJk6r1AyCjqrNIuOABieQfOo3seIhJpVgEN/FothJ+gIAwCQXABg4V7DF9A6T2EaWdBESFb2g7MNlFT0hXcnAIZ5hp0yUFLOLCetp722MKiXwjGd2UaelbL3ziu9zqBsXDyfnQ3DM+AYS9WEy2ciKIgmR8yLah0usjkgzOTFRB0fDRImJ9pKPmyO3N5cqF+AZxDbqtBTIuq7uQL959YBJvCnp6376AEYD1Cyq45z4cInUGWkYPIXEeWmwib4i51XaFbEjnqHKCTyDyEadhti1Rrvi8w10ql8eXkL+ysADaB2k2XqbS4luIPeketh4ozab6A7zDcwLNTnpdIGqKsBTlmWjzkNMop7Yzg2s4756d5nLo0Xch8lso0bRxoN0351P0DiiyIUegPOByIT7Cmn+YqeHrtf4fENl0SdY4XSAt2ssqP0ABsUvMNUpU1EXiGKdEBvlLIuJyNExkdLaYVK6NkvZslKd5mZZgUgZflvndMiG1mRRrHNc1glzrLW6gnr9IK6+vT3xonvnyQ/0Qw7b7bqfTZsCoKd+oAEzET0zp/mPaut7jzZ4bAFEz0TWd4L/AJltcxCN1O75AAAAAElFTkSuQmCC",image:"/v6/b5deda1c1a121af1.svg"}},fs=Object.keys(ps);class gs extends pi{constructor(){super(),this.selected=""}connectedCallback(){super.connectedCallback(),1===fs.length&&(this.selected=fs[0])}Fe({target:t}){"IMG"===t.tagName?this.selected=t.getAttribute("data-name"):this.selected=""}render(){return Kn`
${fs.map((t=>Kn`${ao(`payment.${t}`)}`))}
${this.selected?function(t){const e=ps[t];if(!e)return console.warn(`Cannot find configuration for ${t} payment option`),null;let n;return e.image&&(n=Kn``),Kn`
${n}
`}(this.selected):""}`}}dn(gs,"cName","one-time-donations"),dn(gs,"properties",{selected:{type:String}}),gs.styles=hi`.options{margin:20px 0}.options img{margin:10px;cursor:pointer}.selected{text-align:center}`;class ms extends pi{constructor(){super(),this.items=null,this.type="page",this.categories=null}render(){const t=this.categories||Object.keys(this.items);return Kn``}}dn(ms,"cName","pages-by-categories"),dn(ms,"properties",{items:{type:Object},type:{type:String},categories:{type:Array}}),ms.styles=hi`:host{display:block}ul{list-style-type:none;margin:0;padding:0}nav>h3:first-child{margin-top:0}li{margin-top:8px}`;class Cs extends pi{constructor(){super(),this.type="info",this.message=""}render(){return Kn`${co(this.message)}`}}dn(Cs,"cName","app-notification"),dn(Cs,"properties",{type:{type:String},message:{type:String}}),Cs.styles=hi`:host{display:block;background:#1d1f21;border-radius:7px;padding:1rem;color:#fff;cursor:pointer}a{color:inherit}`;let vs=(t,e,n)=>(t.addEventListener(e,n,!1),()=>t.removeEventListener(e,n,!1));try{const t=Object.defineProperty({},"passive",{get:()=>(vs=(t,e,n)=>(t.addEventListener(e,n,{passive:!0}),()=>t.removeEventListener(e,n,{passive:!0})),!0)});window.addEventListener("test",null,t)}catch(vs){}var bs=(t,e,n)=>vs(t,e,n);const ws=window.requestAnimationFrame||window.webkitRequestAnimationFrame||(t=>setTimeout(t,1e3/60)),ys=window.document.documentElement,xs=(()=>{const t=["Webkit","Khtml","Moz","ms","O"];for(let e=0;ethis.t.removeEventListener(t,e,n)}open(){this.I("beforeopen"),Ss.classList.contains("slideout-open")||Ss.classList.add("slideout-open"),this.P(),this.S(this.g),this.l=!0;const t=this;return this.panel.addEventListener($s.end,(function e(){t.panel.removeEventListener($s.end,e),ks(t.panel,"transition",""),t.I("open")})),this}close(){if(!this.isOpen()&&!this.h)return this;this.I("beforeclose"),this.P(),this.S(0),this.l=!1;const t=this;return this.panel.addEventListener($s.end,(function e(){t.panel.removeEventListener($s.end,e),Ss.classList.remove("slideout-open"),ks(t.panel,"transition",""),ks(t.panel,"transform",""),t.I("close")})),this}toggle(){return this.isOpen()?this.close():this.open()}isOpen(){return this.l}S(t){this.i=t,ks(this.panel,"transform",`translateX(${t}px)`)}P(){ks(this.panel,"transition",`${xs}transform ${this.$}ms ${this.v}`)}k(){const t=()=>{Os=!1};let e;this.X=function(t,e,n){let i,r=!1;const o=()=>{n.call(t,i),r=!1};return bs(t,"scroll",(t=>{i=t,r||(ws(o),r=!0)}))}(js,0,(()=>{this.o||(clearTimeout(e),Os=!0,e=setTimeout(t,250))})),this.C=bs(this.panel,Es.start,(t=>{void 0!==t.touches&&(this.o=!1,this.h=!1,this.s=t.touches[0].pageX,this.u=!this.p||!this.isOpen()&&0!==this.menu.clientWidth)})),this.j=bs(this.panel,Es.cancel,(()=>{this.o=!1,this.h=!1})),this.D=bs(this.panel,Es.end,(()=>{if(this.o)if(this.I("translateend"),this.h&&Math.abs(this.i)>this.T)this.open();else if(this.g-Math.abs(this.i)<=this.T/2){this.P(),this.S(this.g);const t=this;this.panel.addEventListener($s.end,(function e(){this.panel.removeEventListener($s.end,e),ks(t.panel,"transition","")}))}else this.close();this.o=!1})),this.K=bs(this.panel,Es.move,(t=>{if(Os||this.u||void 0===t.touches||function(t){let e=t;for(;e.parentNode;){if(null!==e.getAttribute("data-slideout-ignore"))return e;e=e.parentNode}return null}(t.target))return;const e=t.touches[0].clientX-this.s;let n=e;if(this.i=e,Math.abs(n)>this.M||Math.abs(e)<=20)return;this.h=!0;const i=e*this.ge;this.l&&i>0||!this.l&&i<0||(this.o||this.I("translatestart"),i<=0&&(n=e+this.M*this.ge,this.h=!1),this.o&&Ss.classList.contains("slideout-open")||Ss.classList.add("slideout-open"),ks(this.panel,"transform",`translateX(${n}px)`),this.I("translate",n),this.o=!0)}))}enableTouch(){return this.p=!0,this}disableTouch(){return this.p=!1,this}destroy(){this.close(),this.C(),this.j(),this.D(),this.K(),this.X()}}class Ms extends pi{constructor(){super(),this.Ee=null,this.isOpen=!1,this.disabled=!1,this.$e=0}open(){this.isOpen=!0}close(){this.isOpen=!1}toggle(){this.isOpen=!this.isOpen}je(){const[t,e]=this.shadowRoot.children;this.Ee=new zs({menu:t,panel:e,eventsEmitter:this,padding:270,touch:!1});const n=()=>this.Ee.close();this.Ee.on("beforeopen",(()=>{this.isOpen=!0,this.$e=window.pageYOffset,t.classList.add("open"),e.style.top=-this.$e+"px",e.addEventListener("mousedown",n,!1),e.addEventListener("touchstart",n,!1),window.scroll(0,0)})),this.Ee.on("close",(()=>{this.isOpen=!1,t.classList.remove("open"),e.style.top="",window.scroll(0,this.$e),e.removeEventListener("mousedown",n,!1),e.removeEventListener("touchstart",n,!1)}))}updated(t){if(this.Ee||this.je(),this.isOpen!==this.Ee.isOpen()){const t=this.isOpen?"open":"close";this.Ee[t]()}if(t.has("disabled")){const t=this.disabled?"disableTouch":"enableTouch";this.Ee[t]()}}disconnectedCallback(){super.disconnectedCallback(),this.Ee.destroy(),this.Ee=null}render(){return Kn`
`}}async function Ds(){return(await cr("/versions.txt",{format:"txtArrayJSON",cache:!0})).body}function Ts(t){return window.location.href.replace("/v6/",`/${t}/`)}function Ls(t){window.location.href=Ts(t.target.value)}dn(Ms,"cName","menu-drawer"),dn(Ms,"properties",{isOpen:{type:Boolean},disabled:{type:Boolean}}),Ms.styles=hi`:host{display:block}.menu{display:none;padding:10px;width:256px;min-height:100vh;-webkit-overflow-scrolling:touch}.panel{position:relative;z-index:10;will-change:transform;min-height:100vh;background:#fff}.panel::before{position:absolute;left:0;top:0;bottom:0;width:100%;z-index:6000;background-color:transparent;transition:background-color .2s ease-in-out}.menu.open{display:block}.menu.open+.panel{position:fixed;left:0;right:0;top:0;overflow:hidden;min-height:100%;z-index:10;box-shadow:0 0 20px rgba(0,0,0,.5)}.menu.open+.panel::before{content:'';background-color:rgba(0,0,0,.5)}`;class _s extends pi{constructor(){super(),this.Se=[],this.Oe="v6",this.Oe&&this.Se.push({number:this.Oe})}async connectedCallback(){super.connectedCallback();const t=await Ds();this.Se=t.slice(0).reverse(),this.requestUpdate()}render(){return Kn``}}dn(_s,"cName","versions-select"),_s.styles=hi`:host{display:inline-block}select{display:block;font-size:16px;font-weight:700;color:#444;line-height:1.3;padding-left:.5em;padding-right:1.1em;box-sizing:border-box;margin:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;background-color:transparent;background-image:url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23444444%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E');background-repeat:no-repeat;background-position:right .5em top 50%;background-size:.5em auto;border:0;cursor:pointer}select::-ms-expand{display:none}select:focus{outline:0}`;class Ns extends pi{constructor(){super(),this.Se=[],this.Oe="v6"}async connectedCallback(){super.connectedCallback(),this.ie=io.observe((()=>this.requestUpdate())),this.Se=await Ds(),this.requestUpdate()}disconnectedCallback(){super.disconnectedCallback(),this.ie&&this.ie()}render(){const t=this.Se[this.Se.length-1];return t&&t.number!==this.Oe?Kn`
${co("oldVersionAlert",{latestVersion:t.number,currentVersion:this.Oe,latestVersionUrl:Ts(t.number)})}
`:Kn``}}dn(Ns,"cName","old-version-alert"),Ns.styles=[po,Co,hi`a{color:inherit}`];const Bs=[uo,ho,bo,wo,yo,xo,ko,Oo,Lo,zo,hs,ds,as,ms,gs,Cs,Ms,_s,Ns];const{navigator:Is,location:qs}=window,Ps="localhost"===qs.hostname||"[::1]"===qs.hostname||qs.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),Us="serviceWorker"in Is,Vs=(...t)=>console.log(...t);function Rs(t,e){let n=!1;return Is.serviceWorker.addEventListener("controllerchange",(()=>{n||(n=!0,qs.reload())})),Is.serviceWorker.register(t).then((t=>{Vs("service worker is registered"),t.onupdatefound=()=>function(t,e){t&&(t.onstatechange=()=>{Vs("new worker state",t.state),"installed"===t.state&&(Is.serviceWorker.controller?(Vs("New content is available and will be used when all tabs for this page are closed. See https://bit.ly/CRA-PWA."),e&&e.onUpdate&&e.onUpdate(t)):(Vs("Content is cached for offline use."),e&&e.onSuccess&&e.onSuccess(t)))})}(t.installing,e)})).catch((t=>{console.error("Error during service worker registration:",t)}))}window.__isAppExecuted__=!0;const Gs=function(t){const e=document.querySelector(t);return Bs.forEach((t=>customElements.define(t.cName,t))),io.observe((async t=>{const n=t.response.params.lang||mr;Cr()!==n&&(await br(n),e.ready=!0),$o(t)})),e}("casl-docs");!function(t){Us&&window.addEventListener("load",(()=>{const e="/v6/sw.js";Ps?function(t,e){cr(t,{headers:{"Service-Worker":"script"},format:"raw",absoluteUrl:!0}).then((n=>{const i=n.headers["content-type"]||"";404===n.status||-1===i.indexOf("javascript")?(Vs("cannot detect service worker"),Is.serviceWorker.ready.then((t=>t.unregister())).then((()=>qs.reload()))):Rs(t,e)})).catch((()=>{Vs("No internet connection found. App is running in offline mode.")}))}(e,t):Rs(e,t)}))}({onUpdate(t){Gs.notify("updateAvailable",{onClick(){t.postMessage({type:"SKIP_WAITING"})}})}}); -//# sourceMappingURL=bootstrap.8396b992.js.map +var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},e=function(t){return t&&t.Math==Math&&t},n=e("object"==typeof globalThis&&globalThis)||e("object"==typeof window&&window)||e("object"==typeof self&&self)||e("object"==typeof t&&t)||function(){return this}()||Function("return this")(),i={},r=function(t){try{return!!t()}catch(t){return!0}},o=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),s={},a={}.propertyIsEnumerable,c=Object.getOwnPropertyDescriptor,u=c&&!a.call({1:2},1);s.f=u?function(t){var e=c(this,t);return!!e&&e.enumerable}:a;var l=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},h={}.toString,d=function(t){return h.call(t).slice(8,-1)},p=d,f="".split,g=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},m=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==p(t)?f.call(t,""):Object(t)}:Object,C=g,v=function(t){return m(C(t))},b=function(t){return"object"==typeof t?null!==t:"function"==typeof t},w=b,y=function(t,e){if(!w(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!w(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!w(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!w(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")},x=g,k=function(t){return Object(x(t))},A={}.hasOwnProperty,F=function(t,e){return A.call(k(t),e)},E=b,$=n.document,j=E($)&&E($.createElement),S=function(t){return j?$.createElement(t):{}},O=S,z=!o&&!r((function(){return 7!=Object.defineProperty(O("div"),"a",{get:function(){return 7}}).a})),M=o,D=s,T=l,L=v,_=y,N=F,B=z,I=Object.getOwnPropertyDescriptor;i.f=M?I:function(t,e){if(t=L(t),e=_(e,!0),B)try{return I(t,e)}catch(t){}if(N(t,e))return T(!D.f.call(t,e),t[e])};var q={},P=b,U=function(t){if(!P(t))throw TypeError(String(t)+" is not an object");return t},V=o,R=z,G=U,H=y,Z=Object.defineProperty;q.f=V?Z:function(t,e,n){if(G(t),e=H(e,!0),G(n),R)try{return Z(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t};var X=q,W=l,K=o?function(t,e,n){return X.f(t,e,W(1,n))}:function(t,e,n){return t[e]=n,t},Q={exports:{}},J=n,Y=K,tt=function(t,e){try{Y(J,t,e)}catch(n){J[t]=e}return e},et=tt,nt=n["A"]||et("__core-js_shared__",{}),it=nt,rt=Function.toString;"function"!=typeof it.inspectSource&&(it.inspectSource=function(t){return rt.call(t)});var ot=it.inspectSource,st=ot,at=n.WeakMap,ct="function"==typeof at&&/native code/.test(st(at)),ut={exports:{}},lt=nt;(ut.exports=function(t,e){return lt[t]||(lt[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.11.0",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"});var ht,dt,pt,ft=0,gt=Math.random(),mt=ut.exports,Ct=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++ft+gt).toString(36)},vt=mt("keys"),bt={},wt=ct,yt=b,xt=K,kt=F,At=nt,Ft=function(t){return vt[t]||(vt[t]=Ct(t))},Et=bt,$t=n.WeakMap;if(wt){var jt=At.state||(At.state=new $t),St=jt.get,Ot=jt.has,zt=jt.set;ht=function(t,e){if(Ot.call(jt,t))throw new TypeError("Object already initialized");return e.facade=t,zt.call(jt,t,e),e},dt=function(t){return St.call(jt,t)||{}},pt=function(t){return Ot.call(jt,t)}}else{var Mt=Ft("state");Et[Mt]=!0,ht=function(t,e){if(kt(t,Mt))throw new TypeError("Object already initialized");return e.facade=t,xt(t,Mt,e),e},dt=function(t){return kt(t,Mt)?t[Mt]:{}},pt=function(t){return kt(t,Mt)}}var Dt={set:ht,get:dt,has:pt,enforce:function(t){return pt(t)?dt(t):ht(t,{})},getterFor:function(t){return function(e){var n;if(!yt(e)||(n=dt(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}},Tt=n,Lt=K,_t=F,Nt=tt,Bt=ot,It=Dt.get,qt=Dt.enforce,Pt=String(String).split("String");(Q.exports=function(t,e,n,i){var r,o=!!i&&!!i.unsafe,s=!!i&&!!i.enumerable,a=!!i&&!!i.noTargetGet;"function"==typeof n&&("string"!=typeof e||_t(n,"name")||Lt(n,"name",e),(r=qt(n)).source||(r.source=Pt.join("string"==typeof e?e:""))),t!==Tt?(o?!a&&t[e]&&(s=!0):delete t[e],s?t[e]=n:Lt(t,e,n)):s?t[e]=n:Nt(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&It(this).source||Bt(this)}));var Ut=n,Vt=n,Rt=function(t){return"function"==typeof t?t:void 0},Gt=function(t,e){return arguments.length<2?Rt(Ut[t])||Rt(Vt[t]):Ut[t]&&Ut[t][e]||Vt[t]&&Vt[t][e]},Ht={},Zt=Math.ceil,Xt=Math.floor,Wt=function(t){return isNaN(t=+t)?0:(t>0?Xt:Zt)(t)},Kt=Wt,Qt=Math.min,Jt=Wt,Yt=Math.max,te=Math.min,ee=v,ne=function(t){return t>0?Qt(Kt(t),9007199254740991):0},ie=function(t,e){var n=Jt(t);return n<0?Yt(n+e,0):te(n,e)},re=function(t){return function(e,n,i){var r,o=ee(e),s=ne(o.length),a=ie(i,s);if(t&&n!=n){for(;s>a;)if((r=o[a++])!=r)return!0}else for(;s>a;a++)if((t||a in o)&&o[a]===n)return t||a||0;return!t&&-1}},oe={includes:re(!0),indexOf:re(!1)},se=F,ae=v,ce=oe.indexOf,ue=bt,le=function(t,e){var n,i=ae(t),r=0,o=[];for(n in i)!se(ue,n)&&se(i,n)&&o.push(n);for(;e.length>r;)se(i,n=e[r++])&&(~ce(o,n)||o.push(n));return o},he=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype");Ht.f=Object.getOwnPropertyNames||function(t){return le(t,he)};var de={};de.f=Object.getOwnPropertySymbols;var pe,fe,ge,me=Ht,Ce=de,ve=U,be=Gt("Reflect","ownKeys")||function(t){var e=me.f(ve(t)),n=Ce.f;return n?e.concat(n(t)):e},we=F,ye=be,xe=i,ke=q,Ae=r,Fe=/#|\.prototype\./,Ee=function(t,e){var n=je[$e(t)];return n==Oe||n!=Se&&("function"==typeof e?Ae(e):!!e)},$e=Ee.normalize=function(t){return String(t).replace(Fe,".").toLowerCase()},je=Ee.data={},Se=Ee.NATIVE="N",Oe=Ee.POLYFILL="P",ze=Ee,Me=n,De=i.f,Te=K,Le=Q.exports,_e=tt,Ne=function(t,e){for(var n=ye(e),i=ke.f,r=xe.f,o=0;on;)e.push(arguments[n++]);return on[++rn]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},pe(rn),rn},Ye=function(t){delete on[t]},Ke?pe=function(t){tn.nextTick(an(t))}:nn&&nn.now?pe=function(t){nn.now(an(t))}:en&&!We?(ge=(fe=new en).port2,fe.port1.onmessage=cn,pe=He(ge.postMessage,ge,1)):Re.addEventListener&&"function"==typeof postMessage&&!Re.importScripts&&Qe&&"file:"!==Qe.protocol&&!Ge(un)?(pe=un,Re.addEventListener("message",cn,!1)):pe="onreadystatechange"in Xe("script")?function(t){Ze.appendChild(Xe("script")).onreadystatechange=function(){Ze.removeChild(this),sn(t)}}:function(t){setTimeout(an(t),0)});var ln=n,hn={set:Je,clear:Ye};function dn(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}(function(t,e){var n,i,r,o,s,a=t.target,c=t.global,u=t.stat;if(n=c?Me:u?Me[a]||_e(a,{}):(Me[a]||{}).prototype)for(i in e){if(o=e[i],r=t.noTargetGet?(s=De(n,i))&&s.value:n[i],!Be(c?i:a+(u?".":"#")+i,t.forced)&&void 0!==r){if(typeof o==typeof r)continue;Ne(o,r)}(t.sham||r&&r.sham)&&Te(o,"sham",!0),Le(n,i,o,t)}})({global:!0,bind:!0,enumerable:!0,forced:!ln.setImmediate||!ln.clearImmediate},{setImmediate:hn.set,clearImmediate:hn.clear});const pn="undefined"!=typeof window&&null!=window.customElements&&void 0!==window.customElements.polyfillWrapFlushCallback,fn=(t,e,n=null)=>{for(;e!==n;){const n=e.nextSibling;t.removeChild(e),e=n}},gn=`{{lit-${String(Math.random()).slice(2)}}}`,mn=`\x3c!--${gn}--\x3e`,Cn=new RegExp(`${gn}|${mn}`);class vn{constructor(t,e){this.parts=[],this.element=e;const n=[],i=[],r=document.createTreeWalker(e.content,133,null,!1);let o=0,s=-1,a=0;const{strings:c,values:{length:u}}=t;for(;a0;){const e=c[a],n=xn.exec(e)[2],i=n.toLowerCase()+"$lit$",r=t.getAttribute(i);t.removeAttribute(i);const o=r.split(Cn);this.parts.push({type:"attribute",index:s,name:n,strings:o}),a+=o.length-1}}"TEMPLATE"===t.tagName&&(i.push(t),r.currentNode=t.content)}else if(3===t.nodeType){const e=t.data;if(e.indexOf(gn)>=0){const i=t.parentNode,r=e.split(Cn),o=r.length-1;for(let e=0;e{const n=t.length-e.length;return n>=0&&t.slice(n)===e},wn=t=>-1!==t.index,yn=()=>document.createComment(""),xn=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;function kn(t,e){const{element:{content:n},parts:i}=t,r=document.createTreeWalker(n,133,null,!1);let o=Fn(i),s=i[o],a=-1,c=0;const u=[];let l=null;for(;r.nextNode();){a++;const t=r.currentNode;for(t.previousSibling===l&&(l=null),e.has(t)&&(u.push(t),null===l&&(l=t)),null!==l&&c++;void 0!==s&&s.index===a;)s.index=null!==l?-1:s.index-c,o=Fn(i,o),s=i[o]}u.forEach((t=>t.parentNode.removeChild(t)))}const An=t=>{let e=11===t.nodeType?0:1;const n=document.createTreeWalker(t,133,null,!1);for(;n.nextNode();)e++;return e},Fn=(t,e=-1)=>{for(let n=e+1;n(...e)=>{const n=t(...e);return En.set(n,!0),n},jn=t=>"function"==typeof t&&En.has(t),Sn={},On={};class zn{constructor(t,e,n){this.F=[],this.template=t,this.processor=e,this.options=n}update(t){let e=0;for(const n of this.F)void 0!==n&&n.setValue(t[e]),e++;for(const t of this.F)void 0!==t&&t.commit()}L(){const t=pn?this.template.element.content.cloneNode(!0):document.importNode(this.template.element.content,!0),e=[],n=this.template.parts,i=document.createTreeWalker(t,133,null,!1);let r,o=0,s=0,a=i.nextNode();for(;ot}),Dn=` ${gn} `;class Tn{constructor(t,e,n,i){this.strings=t,this.values=e,this.type=n,this.processor=i}getHTML(){const t=this.strings.length-1;let e="",n=!1;for(let i=0;i-1||n)&&-1===t.indexOf("--\x3e",r+1);const o=xn.exec(t);e+=null===o?t+(n?Dn:mn):t.substr(0,o.index)+o[1]+o[2]+"$lit$"+o[3]+gn}return e+=this.strings[t],e}getTemplateElement(){const t=document.createElement("template");let e=this.getHTML();return void 0!==Mn&&(e=Mn.createHTML(e)),t.innerHTML=e,t}}const Ln=t=>null===t||!("object"==typeof t||"function"==typeof t),_n=t=>Array.isArray(t)||!(!t||!t[Symbol.iterator]);class Nn{constructor(t,e,n){this.dirty=!0,this.element=t,this.name=e,this.strings=n,this.parts=[];for(let t=0;t{try{const t={get capture(){return Vn=!0,!1}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){}})();class Rn{constructor(t,e,n){this.value=void 0,this.B=void 0,this.element=t,this.eventName=e,this.eventContext=n,this.H=t=>this.handleEvent(t)}setValue(t){this.B=t}commit(){for(;jn(this.B);){const t=this.B;this.B=Sn,t(this)}if(this.B===Sn)return;const t=this.B,e=this.value,n=null==t||null!=e&&(t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive),i=null!=t&&(null==e||n);n&&this.element.removeEventListener(this.eventName,this.H,this.Z),i&&(this.Z=Gn(t),this.element.addEventListener(this.eventName,this.H,this.Z)),this.value=t,this.B=Sn}handleEvent(t){"function"==typeof this.value?this.value.call(this.eventContext||this.element,t):this.value.handleEvent(t)}}const Gn=t=>t&&(Vn?{capture:t.capture,passive:t.passive,once:t.once}:t.capture);function Hn(t){let e=Zn.get(t.type);void 0===e&&(e={stringsArray:new WeakMap,keyString:new Map},Zn.set(t.type,e));let n=e.stringsArray.get(t.strings);if(void 0!==n)return n;const i=t.strings.join(gn);return n=e.keyString.get(i),void 0===n&&(n=new vn(t,t.getTemplateElement()),e.keyString.set(i,n)),e.stringsArray.set(t.strings,n),n}const Zn=new Map,Xn=new WeakMap;const Wn=new class{handleAttributeExpressions(t,e,n,i){const r=e[0];if("."===r){return new Pn(t,e.slice(1),n).parts}if("@"===r)return[new Rn(t,e.slice(1),i.eventContext)];if("?"===r)return[new qn(t,e.slice(1),n)];return new Nn(t,e,n).parts}handleTextExpression(t){return new In(t)}};"undefined"!=typeof window&&(window.litHtmlVersions||(window.litHtmlVersions=[])).push("1.3.0");const Kn=(t,...e)=>new Tn(t,e,"html",Wn),Qn=(t,e)=>`${t}--${e}`;let Jn=!0;void 0===window.ShadyCSS?Jn=!1:void 0===window.ShadyCSS.prepareTemplateDom&&(console.warn("Incompatible ShadyCSS version detected. Please update to at least @webcomponents/webcomponentsjs@2.0.2 and @webcomponents/shadycss@1.3.1."),Jn=!1);const Yn=t=>e=>{const n=Qn(e.type,t);let i=Zn.get(n);void 0===i&&(i={stringsArray:new WeakMap,keyString:new Map},Zn.set(n,i));let r=i.stringsArray.get(e.strings);if(void 0!==r)return r;const o=e.strings.join(gn);if(r=i.keyString.get(o),void 0===r){const n=e.getTemplateElement();Jn&&window.ShadyCSS.prepareTemplateDom(n,t),r=new vn(e,n),i.keyString.set(o,r)}return i.stringsArray.set(e.strings,r),r},ti=["html","svg"],ei=new Set,ni=(t,e,n)=>{ei.add(t);const i=n?n.element:document.createElement("template"),r=e.querySelectorAll("style"),{length:o}=r;if(0===o)return void window.ShadyCSS.prepareTemplateStyles(i,t);const s=document.createElement("style");for(let t=0;t{ti.forEach((e=>{const n=Zn.get(Qn(e,t));void 0!==n&&n.keyString.forEach((t=>{const{element:{content:e}}=t,n=new Set;Array.from(e.querySelectorAll("style")).forEach((t=>{n.add(t)})),kn(t,n)}))}))})(t);const a=i.content;n?function(t,e,n=null){const{element:{content:i},parts:r}=t;if(null==n)return void i.appendChild(e);const o=document.createTreeWalker(i,133,null,!1);let s=Fn(r),a=0,c=-1;for(;o.nextNode();)for(c++,o.currentNode===n&&(a=An(e),n.parentNode.insertBefore(e,n));-1!==s&&r[s].index===c;){if(a>0){for(;-1!==s;)r[s].index+=a,s=Fn(r,s);return}s=Fn(r,s)}}(n,s,a.firstChild):a.insertBefore(s,a.firstChild),window.ShadyCSS.prepareTemplateStyles(i,t);const c=a.querySelector("style");if(window.ShadyCSS.nativeShadow&&null!==c)e.insertBefore(c.cloneNode(!0),e.firstChild);else if(n){a.insertBefore(s,a.firstChild);const t=new Set;t.add(s),kn(n,t)}};window.JSCompiler_renameProperty=(t,e)=>t;const ii={toAttribute(t,e){switch(e){case Boolean:return t?"":null;case Object:case Array:return null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){switch(e){case Boolean:return null!==t;case Number:return null===t?null:Number(t);case Object:case Array:return JSON.parse(t)}return t}},ri=(t,e)=>e!==t&&(e==e||t==t),oi={attribute:!0,type:String,converter:ii,reflect:!1,hasChanged:ri};class si extends HTMLElement{constructor(){super(),this.initialize()}static get observedAttributes(){this.finalize();const t=[];return this._classProperties.forEach(((e,n)=>{const i=this.W(n,e);void 0!==i&&(this.J.set(i,n),t.push(i))})),t}static Y(){if(!this.hasOwnProperty(JSCompiler_renameProperty("_classProperties",this))){this._classProperties=new Map;const t=Object.getPrototypeOf(this)._classProperties;void 0!==t&&t.forEach(((t,e)=>this._classProperties.set(e,t)))}}static createProperty(t,e=oi){if(this.Y(),this._classProperties.set(t,e),e.noAccessor||this.prototype.hasOwnProperty(t))return;const n="symbol"==typeof t?Symbol():`__${t}`,i=this.getPropertyDescriptor(t,n,e);void 0!==i&&Object.defineProperty(this.prototype,t,i)}static getPropertyDescriptor(t,e,n){return{get(){return this[e]},set(i){const r=this[t];this[e]=i,this.requestUpdateInternal(t,r,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this._classProperties&&this._classProperties.get(t)||oi}static finalize(){const t=Object.getPrototypeOf(this);if(t.hasOwnProperty("finalized")||t.finalize(),this.finalized=!0,this.Y(),this.J=new Map,this.hasOwnProperty(JSCompiler_renameProperty("properties",this))){const t=this.properties,e=[...Object.getOwnPropertyNames(t),..."function"==typeof Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t):[]];for(const n of e)this.createProperty(n,t[n])}}static W(t,e){const n=e.attribute;return!1===n?void 0:"string"==typeof n?n:"string"==typeof t?t.toLowerCase():void 0}static tt(t,e,n=ri){return n(t,e)}static et(t,e){const n=e.type,i=e.converter||ii,r="function"==typeof i?i:i.fromAttribute;return r?r(t,n):t}static nt(t,e){if(void 0===e.reflect)return;const n=e.type,i=e.converter;return(i&&i.toAttribute||ii.toAttribute)(t,n)}initialize(){this.it=0,this.rt=new Promise((t=>this.ot=t)),this.st=new Map,this.ct(),this.requestUpdateInternal()}ct(){this.constructor._classProperties.forEach(((t,e)=>{if(this.hasOwnProperty(e)){const t=this[e];delete this[e],this.ut||(this.ut=new Map),this.ut.set(e,t)}}))}lt(){this.ut.forEach(((t,e)=>this[e]=t)),this.ut=void 0}connectedCallback(){this.enableUpdating()}enableUpdating(){void 0!==this.ot&&(this.ot(),this.ot=void 0)}disconnectedCallback(){}attributeChangedCallback(t,e,n){e!==n&&this.ht(t,n)}dt(t,e,n=oi){const i=this.constructor,r=i.W(t,n);if(void 0!==r){const t=i.nt(e,n);if(void 0===t)return;this.it=8|this.it,null==t?this.removeAttribute(r):this.setAttribute(r,t),this.it=-9&this.it}}ht(t,e){if(8&this.it)return;const n=this.constructor,i=n.J.get(t);if(void 0!==i){const t=n.getPropertyOptions(i);this.it=16|this.it,this[i]=n.et(e,t),this.it=-17&this.it}}requestUpdateInternal(t,e,n){let i=!0;if(void 0!==t){const r=this.constructor;n=n||r.getPropertyOptions(t),r.tt(this[t],e,n.hasChanged)?(this.st.has(t)||this.st.set(t,e),!0!==n.reflect||16&this.it||(void 0===this.ft&&(this.ft=new Map),this.ft.set(t,n))):i=!1}!this.gt&&i&&(this.rt=this.Ct())}requestUpdate(t,e){return this.requestUpdateInternal(t,e),this.updateComplete}async Ct(){this.it=4|this.it;try{await this.rt}catch(t){}const t=this.performUpdate();return null!=t&&await t,!this.gt}get gt(){return 4&this.it}get hasUpdated(){return 1&this.it}performUpdate(){if(!this.gt)return;this.ut&&this.lt();let t=!1;const e=this.st;try{t=this.shouldUpdate(e),t?this.update(e):this.vt()}catch(e){throw t=!1,this.vt(),e}t&&(1&this.it||(this.it=1|this.it,this.firstUpdated(e)),this.updated(e))}vt(){this.st=new Map,this.it=-5&this.it}get updateComplete(){return this.bt()}bt(){return this.rt}shouldUpdate(t){return!0}update(t){void 0!==this.ft&&this.ft.size>0&&(this.ft.forEach(((t,e)=>this.dt(e,this[e],t))),this.ft=void 0),this.vt()}updated(t){}firstUpdated(t){}}si.finalized=!0;const ai=window.ShadowRoot&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,ci=Symbol();class ui{constructor(t,e){if(e!==ci)throw new Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t}get styleSheet(){return void 0===this.wt&&(ai?(this.wt=new CSSStyleSheet,this.wt.replaceSync(this.cssText)):this.wt=null),this.wt}toString(){return this.cssText}}const li=t=>new ui(String(t),ci),hi=(t,...e)=>{const n=e.reduce(((e,n,i)=>e+(t=>{if(t instanceof ui)return t.cssText;if("number"==typeof t)return t;throw new Error(`Value passed to 'css' function must be a 'css' function result: ${t}. Use 'unsafeCSS' to pass non-literal values, but\n take care to ensure page security.`)})(n)+t[i+1]),t[0]);return new ui(n,ci)};(window.litElementVersions||(window.litElementVersions=[])).push("2.4.0");const di={};class pi extends si{static getStyles(){return this.styles}static yt(){if(this.hasOwnProperty(JSCompiler_renameProperty("_styles",this)))return;const t=this.getStyles();if(Array.isArray(t)){const e=(t,n)=>t.reduceRight(((t,n)=>Array.isArray(n)?e(n,t):(t.add(n),t)),n),n=e(t,new Set),i=[];n.forEach((t=>i.unshift(t))),this.xt=i}else this.xt=void 0===t?[]:[t];this.xt=this.xt.map((t=>{if(t instanceof CSSStyleSheet&&!ai){const e=Array.prototype.slice.call(t.cssRules).reduce(((t,e)=>t+e.cssText),"");return li(e)}return t}))}initialize(){super.initialize(),this.constructor.yt(),this.renderRoot=this.createRenderRoot(),window.ShadowRoot&&this.renderRoot instanceof window.ShadowRoot&&this.adoptStyles()}createRenderRoot(){return this.attachShadow({mode:"open"})}adoptStyles(){const t=this.constructor.xt;0!==t.length&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow?ai?this.renderRoot.adoptedStyleSheets=t.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):this.kt=!0:window.ShadyCSS.ScopingShim.prepareAdoptedCssText(t.map((t=>t.cssText)),this.localName))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&void 0!==window.ShadyCSS&&window.ShadyCSS.styleElement(this)}update(t){const e=this.render();super.update(t),e!==di&&this.constructor.render(e,this.renderRoot,{scopeName:this.localName,eventContext:this}),this.kt&&(this.kt=!1,this.constructor.xt.forEach((t=>{const e=document.createElement("style");e.textContent=t.cssText,this.renderRoot.appendChild(e)})))}render(){return di}}pi.finalized=!0,pi.render=(t,e,n)=>{if(!n||"object"!=typeof n||!n.scopeName)throw new Error("The `scopeName` option is required.");const i=n.scopeName,r=Xn.has(e),o=Jn&&11===e.nodeType&&!!e.host,s=o&&!ei.has(i),a=s?document.createDocumentFragment():e;if(((t,e,n)=>{let i=Xn.get(e);void 0===i&&(fn(e,e.firstChild),Xn.set(e,i=new In(Object.assign({templateFactory:Hn},n))),i.appendInto(e)),i.setValue(t),i.commit()})(t,a,Object.assign({templateFactory:Yn(i)},n)),s){const t=Xn.get(a);Xn.delete(a);const n=t.value instanceof zn?t.value.template:void 0;ni(i,a,n),fn(e,e.firstChild),e.appendChild(a),Xn.set(e,t)}!r&&o&&window.ShadyCSS.styleElement(e.host)};const fi=new WeakMap,gi=$n((t=>e=>{if(!(e instanceof In))throw new Error("cache can only be used in text bindings");let n=fi.get(e);void 0===n&&(n=new WeakMap,fi.set(e,n));const i=e.value;if(i instanceof zn){if(t instanceof Tn&&i.template===e.options.templateFactory(t))return void e.setValue(t);{let t=n.get(i.template);void 0===t&&(t={instance:i,nodes:document.createDocumentFragment()},n.set(i.template,t)),((t,e,n=null,i=null)=>{for(;e!==n;){const n=e.nextSibling;t.insertBefore(e,i),e=n}})(t.nodes,e.startNode.nextSibling,e.endNode)}}if(t instanceof Tn){const i=e.options.templateFactory(t),r=n.get(i);void 0!==r&&(e.setValue(r.nodes),e.commit(),e.value=r.instance)}e.setValue(t)}));var mi={items:[{name:"learn",route:!1,children:[{heading:"docs"},{name:"guide",page:"guide/intro"},{name:"api"},{name:"examples",url:"https://github.com/stalniy/casl-examples"},{name:"cookbook",page:"cookbook/intro"}]},{name:"ecosystem",route:!1,children:[{heading:"packages"},{name:"pkg-prisma",page:"package/casl-prisma"},{name:"pkg-mongoose",page:"package/casl-mongoose"},{name:"pkg-angular",page:"package/casl-angular"},{name:"pkg-react",page:"package/casl-react"},{name:"pkg-vue",page:"package/casl-vue"},{name:"pkg-aurelia",page:"package/casl-aurelia"},{heading:"help"},{name:"questions",url:"https://stackoverflow.com/questions/tagged/casl"},{name:"chat",url:"https://gitter.im/stalniy-casl/casl"},{heading:"news"},{name:"blog",url:"https://sergiy-stotskiy.medium.com"}]},{name:"support"}],footer:[{icon:"github",url:"https://github.com/stalniy/casl"},{icon:"twitter",url:"https://twitter.com/sergiy_stotskiy"},{icon:"medium",url:"https://sergiy-stotskiy.medium.com"}]},Ci={exports:{}};Ci.exports=Fi,Ci.exports.parse=bi,Ci.exports.compile=function(t,e){return wi(bi(t,e))},Ci.exports.tokensToFunction=wi,Ci.exports.tokensToRegExp=Ai;var vi=new RegExp(["(\\\\.)","(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?"].join("|"),"g");function bi(t,e){for(var n,i=[],r=0,o=0,s="",a=e&&e.delimiter||"/",c=e&&e.delimiters||"./",u=!1;null!==(n=vi.exec(t));){var l=n[0],h=n[1],d=n.index;if(s+=t.slice(o,d),o=d+l.length,h)s+=h[1],u=!0;else{var p="",f=t[o],g=n[2],m=n[3],C=n[4],v=n[5];if(!u&&s.length){var b=s.length-1;c.indexOf(s[b])>-1&&(p=s[b],s=s.slice(0,b))}s&&(i.push(s),s="",u=!1);var w=""!==p&&void 0!==f&&f!==p,y="+"===v||"*"===v,x="?"===v||"*"===v,k=p||a,A=m||C;i.push({name:g||r++,prefix:p,delimiter:k,optional:x,repeat:y,partial:w,pattern:A?xi(A):"[^"+yi(k)+"]+?"})}}return(s||o-1;else{var p=d.repeat?"(?:"+d.pattern+")(?:"+yi(d.delimiter)+"(?:"+d.pattern+"))*":d.pattern;e&&e.push(d),d.optional?d.partial?u+=yi(d.prefix)+"("+p+")?":u+="(?:"+yi(d.prefix)+"("+p+"))?":u+=yi(d.prefix)+"("+p+")"}}return o?(i||(u+="(?:"+s+")?"),u+="$"===c?"$":"(?="+c+")"):(i||(u+="(?:"+s+"(?="+c+"))?"),l||(u+="(?="+s+"|"+c+")")),new RegExp(u,ki(n))}function Fi(t,e,n){return t instanceof RegExp?function(t,e){if(!e)return t;var n=t.source.match(/\((?!\?)/g);if(n)for(var i=0;it.replace(new RegExp(`{{[  ]*${e}[  ]*}}`,"gm"),String(Ri(n)))),t)}function Vi(t,e){const n=t.split(".");let i=e.strings;for(;null!=i&&n.length>0;)i=i[n.shift()];return null!=i?i.toString():null}function Ri(t){return"function"==typeof t?t():t}let Gi={loader:()=>Promise.resolve({}),empty:t=>`[${t}]`,lookup:Vi,interpolate:Ui,translationCache:{}};function Hi(t,e,n=Gi){var i;i={previousStrings:n.strings,previousLang:n.lang,lang:n.lang=t,strings:n.strings=e},window.dispatchEvent(new CustomEvent("langChanged",{detail:i}))}function Zi(t,e){const n=e=>t(e.detail);return window.addEventListener("langChanged",n,e),()=>window.removeEventListener("langChanged",n)}function Xi(t,e,n=Gi){let i=n.translationCache[t]||(n.translationCache[t]=n.lookup(t,n)||n.empty(t,n));return null!=(e=null!=e?Ri(e):null)?n.interpolate(i,e,n):i}function Wi(t){return t instanceof In?t.startNode.isConnected:t instanceof Bn?t.committer.element.isConnected:t.element.isConnected}const Ki=new Map;var Qi;function Ji(t,e,n){const i=e(n);t.value!==i&&(t.setValue(i),t.commit())}Zi((t=>{for(const[e,n]of Ki)Wi(e)&&Ji(e,n,t)})),Qi=Ki,setInterval((()=>{return t=()=>function(t){for(const[e]of t)Wi(e)||t.delete(e)}(Qi),void("requestIdleCallback"in window?window.requestIdleCallback(t):setTimeout(t));var t}),6e4);const Yi=$n((t=>e=>{Ki.set(e,t),Ji(e,t)})),tr=new WeakMap,er=$n((t=>e=>{if(!(e instanceof In))throw new Error("unsafeHTML can only be used in text bindings");const n=tr.get(e);if(void 0!==n&&Ln(t)&&t===n.value&&e.value===n.fragment)return;const i=document.createElement("template");i.innerHTML=t;const r=document.importNode(i.content,!0);e.setValue(r),tr.set(e,{value:t,fragment:r})})),nr=(...t)=>JSON.stringify(t);function ir(t,e=nr){const n=new Map,i=function(...i){const r=e(...i);return n.has(r)||n.set(r,t.apply(this,i)),n.get(r)};return i.cache=n,i}const rr=t=>t,or={json:JSON,raw:{parse:rr,stringify:rr},txtArrayJSON:{parse(t){const e=t.trim().replace(/[\r\n]+/g,",");return JSON.parse(`[${e}]`)},stringify(){throw new Error('"txtArrayJSON" format is not serializable')}}};function sr(t,e={}){const n=or[e.format||"json"];return new Promise(((i,r)=>{const o=new XMLHttpRequest;o.open(e.method||"GET",t),e.headers&&Object.keys(e.headers).forEach((t=>{o.setRequestHeader(t,e.headers[t])})),o.onload=()=>i({status:o.status,headers:{"content-type":o.getResponseHeader("Content-Type")},body:n.parse(o.responseText)}),o.ontimeout=o.onerror=r,o.send(e.data?n.stringify(e.data):null)}))}const ar=Object.create(null);function cr(t,e={}){const n=e.absoluteUrl?t:Pi+t;return"GET"!==(e.method||"GET")?sr(n,e):(ar[n]=ar[n]||sr(n,e),!0===e.cache?ar[n]:ar[n].then((t=>(delete ar[n],t))).catch((t=>(delete ar[n],Promise.reject(t)))))}var ur={en:{default:"/assets/a.507f0a5d.json"}};function lr(t,e){const n=t.split(".");let i=e.strings;for(let t=0;te[n]))}const pr=function(t){return Gi=Object.assign(Object.assign({},Gi),t)}({loader:async t=>(await cr(ur[t].default)).body,lookup:lr,interpolate:dr,empty:function(t){return console.warn(`missing i18n key: ${t}`),t}}),fr=ir(((t,e)=>new Intl.DateTimeFormat(t,Xi(`dateTimeFormats.${e}`)))),gr=["en"],mr=gr[0],Cr=()=>pr.lang,vr=Xi;function br(t){if(!gr.includes(t))throw new Error(`Locale ${t} is not supported. Supported: ${gr.join(", ")}`);return async function(t,e=Gi){const n=await e.loader(t,e);e.translationCache={},Hi(t,n,e)}(t)}var wr=function(){return(wr=Object.assign||function(t){for(var e,n=1,i=arguments.length;n=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function xr(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var i,r,o=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(i=o.next()).done;)s.push(i.value)}catch(t){r={error:t}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return s}function kr(){for(var t=[],e=0;e0?[{node:n,keys:i}]:[]}return t.prototype.next=function(){var t=this.dive();return this.backtrack(),t},t.prototype.dive=function(){if(0===this.Ft.length)return{done:!0,value:void 0};var t=Er(this.Ft),e=t.node,n=t.keys;return""===Er(n)?{done:!1,value:this.result()}:(this.Ft.push({node:e[Er(n)],keys:Object.keys(e[Er(n)])}),this.dive())},t.prototype.backtrack=function(){0!==this.Ft.length&&(Er(this.Ft).keys.pop(),Er(this.Ft).keys.length>0||(this.Ft.pop(),this.backtrack()))},t.prototype.key=function(){return this.set._prefix+this.Ft.map((function(t){var e=t.keys;return Er(e)})).filter((function(t){return""!==t})).join("")},t.prototype.value=function(){return Er(this.Ft).node[""]},t.prototype.result=function(){return"VALUES"===this.At?this.value():"KEYS"===this.At?this.key():[this.key(),this.value()]},t.prototype[Symbol.iterator]=function(){return this},t}(),Er=function(t){return t[t.length-1]},$r=function(t,e,n,i,r,o){o.push({distance:0,ia:i,ib:0,edit:r});for(var s=[];o.length>0;){var a=o.pop(),c=a.distance,u=a.ia,l=a.ib,h=a.edit;if(l!==e.length)if(t[u]===e[l])o.push({distance:c,ia:u+1,ib:l+1,edit:0});else{if(c>=n)continue;2!==h&&o.push({distance:c+1,ia:u,ib:l+1,edit:3}),u0;)s();return r}(this._tree,t,e)},t.prototype.get=function(t){var e=Or(this._tree,t);return void 0!==e?e[""]:void 0},t.prototype.has=function(t){var e=Or(this._tree,t);return void 0!==e&&e.hasOwnProperty("")},t.prototype.keys=function(){return new Fr(this,"KEYS")},t.prototype.set=function(t,e){if("string"!=typeof t)throw new Error("key must be a string");return delete this.Et,zr(this._tree,t)[""]=e,this},Object.defineProperty(t.prototype,"size",{get:function(){var t=this;return this.Et||(this.Et=0,this.forEach((function(){t.Et+=1}))),this.Et},enumerable:!1,configurable:!0}),t.prototype.update=function(t,e){if("string"!=typeof t)throw new Error("key must be a string");delete this.Et;var n=zr(this._tree,t);return n[""]=e(n[""]),this},t.prototype.values=function(){return new Fr(this,"VALUES")},t.prototype[Symbol.iterator]=function(){return this.entries()},t.from=function(e){var n,i,r=new t;try{for(var o=yr(e),s=o.next();!s.done;s=o.next()){var a=xr(s.value,2),c=a[0],u=a[1];r.set(c,u)}}catch(t){n={error:t}}finally{try{s&&!s.done&&(i=o.return)&&i.call(o)}finally{if(n)throw n.error}}return r},t.fromObject=function(e){return t.from(Object.entries(e))},t}(),Sr=function(t,e,n){if(void 0===n&&(n=[]),0===e.length||null==t)return[t,n];var i=Object.keys(t).find((function(t){return""!==t&&e.startsWith(t)}));return void 0===i?(n.push([t,e]),Sr(void 0,"",n)):(n.push([t,i]),Sr(t[i],e.slice(i.length),n))},Or=function(t,e){if(0===e.length||null==t)return t;var n=Object.keys(t).find((function(t){return""!==t&&e.startsWith(t)}));return void 0!==n?Or(t[n],e.slice(n.length)):void 0},zr=function(t,e){var n;if(0===e.length||null==t)return t;var i=Object.keys(t).find((function(t){return""!==t&&e.startsWith(t)}));if(void 0===i){var r=Object.keys(t).find((function(t){return""!==t&&t.startsWith(e[0])}));if(void 0!==r){var o=Mr(e,r);return t[o]=((n={})[r.slice(o.length)]=t[r],n),delete t[r],zr(t[o],e.slice(o.length))}return t[e]={},t[e]}return zr(t[i],e.slice(i.length))},Mr=function(t,e,n,i,r){return void 0===n&&(n=0),void 0===i&&(i=Math.min(t.length,e.length)),void 0===r&&(r=""),n>=i||t[n]!==e[n]?r:Mr(t,e,n+1,i,r+t[n])},Dr=function(t,e){var n=xr(Sr(t,e),2),i=n[0],r=n[1];if(void 0!==i){delete i[""];var o=Object.keys(i);0===o.length&&Tr(r),1===o.length&&Lr(r,o[0],i[o[0]])}},Tr=function(t){if(0!==t.length){var e=xr(_r(t),2),n=e[0];delete n[e[1]],0===Object.keys(n).length&&Tr(t.slice(0,-1))}},Lr=function(t,e,n){if(0!==t.length){var i=xr(_r(t),2),r=i[0],o=i[1];r[o+e]=n,delete r[o]}},_r=function(t){return t[t.length-1]},Nr=function(){function t(t){if(null==(null==t?void 0:t.fields))throw new Error('MiniSearch: option "fields" must be provided');this.$t=wr(wr(wr({},Vr),t),{searchOptions:wr(wr({},Rr),t.searchOptions||{})}),this.jt=new jr,this.St=0,this.Ot={},this.zt={},this.Mt={},this.Dt={},this.Tt=0,this.Lt={},this.addFields(this.$t.fields)}return t.prototype.add=function(t){var e=this,n=this.$t,i=n.extractField,r=n.tokenize,o=n.processTerm,s=n.fields,a=n.idField,c=i(t,a);if(null==c)throw new Error('MiniSearch: document does not have ID field "'+a+'"');var u=this.addDocumentId(c);this.saveStoredFields(u,t),s.forEach((function(n){var s=i(t,n);if(null!=s){var a=r(s.toString(),n);e.addFieldLength(u,e.zt[n],e.documentCount-1,a.length),a.forEach((function(t){var i=o(t,n);i&&e.addTerm(e.zt[n],u,i)}))}}))},t.prototype.addAll=function(t){var e=this;t.forEach((function(t){return e.add(t)}))},t.prototype.addAllAsync=function(t,e){var n=this;void 0===e&&(e={});var i=e.chunkSize,r=void 0===i?10:i,o={chunk:[],promise:Promise.resolve()},s=t.reduce((function(t,e,i){var o=t.chunk,s=t.promise;return o.push(e),(i+1)%r==0?{chunk:[],promise:s.then((function(){return new Promise((function(t){return setTimeout(t,0)}))})).then((function(){return n.addAll(o)}))}:{chunk:o,promise:s}}),o),a=s.chunk;return s.promise.then((function(){return n.addAll(a)}))},t.prototype.remove=function(t){var e=this,n=this.$t,i=n.tokenize,r=n.processTerm,o=n.extractField,s=n.fields,a=n.idField,c=o(t,a);if(null==c)throw new Error('MiniSearch: document does not have ID field "'+a+'"');var u=xr(Object.entries(this.Ot).find((function(t){var e=xr(t,2);e[0];var n=e[1];return c===n}))||[],1)[0];if(null==u)throw new Error("MiniSearch: cannot remove document with ID "+c+": it is not in the index");s.forEach((function(n){var s=o(t,n);null!=s&&i(s.toString(),n).forEach((function(t){var i=r(t,n);i&&e.removeTerm(e.zt[n],u,i)}))})),delete this.Lt[u],delete this.Ot[u],this.St-=1},t.prototype.removeAll=function(t){var e=this;if(t)t.forEach((function(t){return e.remove(t)}));else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this.jt=new jr,this.St=0,this.Ot={},this.Mt={},this.Dt={},this.Lt={},this.Tt=0}},t.prototype.search=function(t,e){var n=this;void 0===e&&(e={});var i=this.$t,r=i.tokenize,o=i.processTerm,s=i.searchOptions,a=wr(wr({tokenize:r,processTerm:o},s),e),c=a.tokenize,u=a.processTerm,l=c(t).map((function(t){return u(t)})).filter((function(t){return!!t})).map(Pr(a)).map((function(t){return n.executeQuery(t,a)})),h=this.combineResults(l,a.combineWith);return Object.entries(h).reduce((function(t,e){var i=xr(e,2),r=i[0],o=i[1],s=o.score,c=o.match,u=o.terms,l={id:n.Ot[r],terms:Ur(u),score:s,match:c};return Object.assign(l,n.Lt[r]),(null==a.filter||a.filter(l))&&t.push(l),t}),[]).sort((function(t,e){return t.scoret.title)).join(" ");default:return t[e]}},fields:["title","headings","summary"],searchOptions:{boost:{title:2}}};var Xr=Object.freeze({__proto__:null,pages:{en:{notfound:"/assets/a.3a1055aa.json","support-casljs":"/assets/a.fb3a29b4.json","advanced/ability-inheritance":"/assets/a.d397cd54.json","advanced/ability-to-database-query":"/assets/a.1cbe572a.json","advanced/customize-ability":"/assets/a.43b3ebd4.json","advanced/debugging-testing":"/assets/a.895c28e2.json","advanced/typescript":"/assets/a.29bf67b2.json","api/casl-ability":"/assets/a.39bf2d3c.json","api/casl-ability-extra":"/assets/a.f4795c7d.json","cookbook/cache-rules":"/assets/a.e43ce3e2.json","cookbook/claim-authorization":"/assets/a.8e663da7.json","cookbook/intro":"/assets/a.0dea9028.json","cookbook/less-confusing-can-api":"/assets/a.d83e511d.json","cookbook/roles-with-persisted-permissions":"/assets/a.6ae53ea0.json","cookbook/roles-with-static-permissions":"/assets/a.12302ceb.json","guide/conditions-in-depth":"/assets/a.55d6bf93.json","guide/define-aliases":"/assets/a.34a69a85.json","guide/define-rules":"/assets/a.5668f429.json","guide/install":"/assets/a.83a32d45.json","guide/intro":"/assets/a.c7c52381.json","guide/restricting-fields":"/assets/a.704691ce.json","guide/subject-type-detection":"/assets/a.1cb23e25.json","package/casl-angular":"/assets/a.f6973802.json","package/casl-mongoose":"/assets/a.388c5727.json","package/casl-prisma":"/assets/a.6658bdbb.json","package/casl-aurelia":"/assets/a.c852f966.json","package/casl-react":"/assets/a.c38715ec.json","package/casl-vue":"/assets/a.d660db78.json"}},summaries:{en:"/assets/content_pages_summaries.en.d03f4097.json"},searchIndexes:{en:"/assets/content_pages_searchIndexes.en.4b3e849b.json"}});const Wr={page:new class{constructor({pages:t,summaries:e,searchIndexes:n}){this._t=t,this.Nt=e,this.Bt=n,this.It=ir(this.It),this.qt=ir(this.qt),this.Pt=ir(this.Pt),this.byCategories=ir(this.byCategories),this.load=ir(this.load)}async load(t,e){const n=this._t[t][e];if(!n)throw i=`Page with ${e} is not found`,Object.assign(new Error(i),{code:"NOT_FOUND"});var i;return(await cr(n)).body}async qt(t){return(await cr(this.Nt[t])).body}async Pt(t,e=null){const n=await this.byCategories(t,e);return Object.keys(n).reduce(((t,e)=>t.concat(n[e])),[])}async getNearestFor(t,e,n=null){const i=await this.Pt(t,n),r=i.findIndex((t=>t.id===e));if(-1===r)return[];const o=r-1,s=r+1;return[o<0?void 0:i[o],s>=i.length?void 0:i[s]]}async byCategories(t,e=null){const{items:n}=await this.qt(t),i={};return n.forEach((t=>{t.categories.forEach((e=>{i[e]=i[e]||[],i[e].push(t)}))})),Array.isArray(e)?e.reduce(((t,e)=>(t[e]=i[e],t)),{}):i}async at(t,e){const{items:n}=await this.qt(t);return n[e]}async It(t){const e=this.Bt[t],n=await cr(e);return Nr.loadJS(n.body,Zr)}async search(t,e,n){const[i,r]=await Promise.all([this.It(t),this.qt(t)]);return i.search(e,n).slice(0,15).map((t=>{const[e]=r.byId[t.id];return t.doc=r.items[e],t.hints=function(t){const e={};return t.terms.forEach((n=>{const i=new RegExp(`(${n})`,"gi");t.match[n].forEach((r=>{const o=t.doc[r];if("string"==typeof o)e[r]=o.replace(i,"$1");else if("headings"===r){const t=o.reduce(((t,e)=>(e.title.toLowerCase().includes(n)&&t.push({id:e.id,title:e.title.replace(i,"$1")}),t)),[]);e[r]=t.length?t:null}}))})),e}(t),t}))}}(Xr)};var Kr=t=>{const e=Wr[t];if(!e)throw new TypeError(`Unknown content loader "${t}".`);return e};const Qr=t=>t,Jr=(t=Qr)=>async e=>{const n=t(e),i=Kr("page");if(n.id)n.id.endsWith("/")?n.redirectTo=n.id.slice(0,-1):[n.page,n.byCategories,n.nav]=await Promise.all([i.load(n.lang,n.id),n.categories.length?i.byCategories(n.lang,n.categories):null,i.getNearestFor(n.lang,n.id,n.categories)]);else{const t=await async function(t,e){if(!e.categories)return t.at(e.lang,0);const n=await t.byCategories(e.lang,e.categories),i=e.categories.find((t=>n[t].length));return n[i][0]}(i,n);n.redirectTo=t.id}return n},Yr=(t=>({match:e,error:n,resolved:i})=>n?function(t){if("NOT_FOUND"===t.code)return{body:Kn``};throw t}(n):i.redirectTo?{redirect:{name:"page",params:{id:i.redirectTo,lang:e.params.lang}}}:{body:t(i,e.params)})((t=>({main:Kn``,sidebar:t.byCategories?Kn``:null})));var to=Object.freeze({__proto__:null,parse:function(t){return t?JSON.parse(`{"${t.replace(/&/g,'","').replace(/=/g,'":"')}"}`):{}},stringify:function(t){return t?Object.keys(t).reduce(((e,n)=>(e.push(`${n}=${t[n]}`),e)),[]).join("&"):""}});function eo(t){return t.restrictions?t.path.replace(/:([\w_-]+)(\?)?/g,((e,n,i="")=>{const r=t.restrictions[n];return r?`:${n}(${r})${i}`:n+i})):t.path}function no(t,e){let n=!1;const i=t.replace(/:([\w_-]+)\??/g,((t,i)=>(e[i]&&"undefined"!==e[i]||(n=!0),e[i])));return n?null:i}const io=function(t,e,n){var i,r;void 0===n&&(n={});var o,s,a,c,u,l,h,d=void 0===(i=n.history)?{}:i,p=n.sideEffects,f=n.external,g=void 0!==(r=n.invisibleRedirects)&&r,m=[],C=[],v=[],b=function(){l=void 0,h=void 0},w=function(){l&&l(),b()},y=function(){h&&h(),b()},x=function(){u&&(u=void 0,m.forEach((function(t){t()})))},k=function(t,e){if(!t.redirect||!g||$i(t.redirect)){a=t,c=e;var n={response:t,navigation:e,router:s};i=n,C.forEach((function(t){t(i)})),function(t){v.splice(0).forEach((function(e){e(t)})),p&&p.forEach((function(e){e(t)}))}(n)}var i;void 0===t.redirect||$i(t.redirect)||o.navigate(t.redirect,"replace")},A=function(t,e,n,i,r){x(),n.finish();var o=ji(t,e,r,s,f);y(),k(o,i)};return o=t((function(t){var n={action:t.action,previous:a},i=e.match(t.location);if(!i)return t.finish(),void y();var r=i.route,s=i.match;!function(t){return void 0!==t.methods.resolve}(r)?A(r,s,t,n,null):(m.length&&void 0===u&&(u=function(){o.cancel(),x(),w()},m.forEach((function(t){t(u)}))),r.methods.resolve(s,f).then((function(t){return{resolved:t,error:null}}),(function(t){return{error:t,resolved:null}})).then((function(e){t.cancelled||A(r,s,t,n,e)})))}),d),s={route:e.route,history:o,external:f,observe:function(t,e){var n,i=void 0===(n=(e||{}).initial)||n;return C.push(t),a&&i&&t({response:a,navigation:c,router:s}),function(){C=C.filter((function(e){return e!==t}))}},once:function(t,e){var n,i=void 0===(n=(e||{}).initial)||n;a&&i?t({response:a,navigation:c,router:s}):v.push(t)},cancel:function(t){return m.push(t),function(){m=m.filter((function(e){return e!==t}))}},url:function(t){var e,n=t.name,i=t.params,r=t.hash,a=t.query;if(n){var c=s.route(n);c&&(e=function(t,e){return t.methods.pathname(e)}(c,i))}return o.url({pathname:e,hash:r,query:a})},navigate:function(t){w();var e,n,i=t.url,r=t.state,s=t.method;if(o.navigate({url:i,state:r},s),t.cancelled||t.finished)return e=t.cancelled,n=t.finished,l=e,h=n,b},current:function(){return{response:a,navigation:c}},destroy:function(){o.destroy()}},o.current(),s}((function(t,e){if(void 0===e&&(e={}),!window||!window.location)throw new Error("Cannot use @hickory/browser without a DOM");var n,i,r=function(t){void 0===t&&(t={});var e=t.query,n=void 0===e?{}:e,i=n.parse,r=void 0===i?Ti:i,o=n.stringify,s=void 0===o?Li:o,a=t.base;return{location:function(t,e){var n=t.url,i=t.state;if(""===n||"#"===n.charAt(0)){e||(e={pathname:"/",hash:"",query:r()});var o={pathname:e.pathname,hash:"#"===n.charAt(0)?n.substring(1):e.hash,query:e.query};return i&&(o.state=i),o}var s,c=n.indexOf("#");-1!==c?(s=n.substring(c+1),n=n.substring(0,c)):s="";var u,l=n.indexOf("?");-1!==l&&(u=n.substring(l+1),n=n.substring(0,l));var h=r(u),d=a?a.remove(n):n;""===d&&(d="/");var p={hash:s,query:h,pathname:d};return i&&(p.state=i),p},keyed:function(t,e){return t.key=e,t},stringify:function(t){if("string"==typeof t){var e=t.charAt(0);return"#"===e||"?"===e?t:a?a.add(t):t}return(void 0!==t.pathname?a?a.add(t.pathname):t.pathname:"")+Di(s(t.query),"?")+Di(t.hash,"#")}}}(e),o=(n=0,{major:function(t){return t&&(n=t[0]+1),[n++,0]},minor:function(t){return[t[0],t[1]+1]}}),s={confirmNavigation:function(t,e,n){i?i(t,e,n||_i):e()},confirm:function(t){i=t||null}},a=s.confirm,c=s.confirmNavigation;function u(t){var e=window.location,n=e.pathname+e.search+e.hash,i=t||Ni(),s=i.key,a=i.state;s||(s=o.major(),window.history.replaceState({key:s,state:a},"",n));var c=r.location({url:n,state:a});return r.keyed(c,s)}function l(t){return r.stringify(t)}var h=void 0!==Ni().key?"pop":"push",d=function(t){var e,n=t.responseHandler,i=t.utils,r=t.keygen,o=t.current,s=t.push,a=t.replace;function c(t,n,i,r){var o={location:t,action:n,finish:function(){e===o&&(i(),e=void 0)},cancel:function(t){e===o&&(r(t),o.cancelled=!0,e=void 0)},cancelled:!1};return o}function u(t){var e=i.keyed(t,r.minor(o().key));return c(e,"replace",a.finish(e),a.cancel)}function l(t){var e=i.keyed(t,r.major(o().key));return c(e,"push",s.finish(e),s.cancel)}return{prepare:function(t,e){var n=o(),r=i.location(t,n);switch(e){case"anchor":return i.stringify(r)===i.stringify(n)?u(r):l(r);case"push":return l(r);case"replace":return u(r);default:throw new Error("Invalid navigation type: "+e)}},emitNavigation:function(t){e=t,n(t)},createNavigation:c,cancelPending:function(t){e&&(e.cancel(t),e=void 0)}}}({responseHandler:t,utils:r,keygen:o,current:function(){return b.location},push:{finish:function(t){return function(){var e=l(t),n=t.key,i=t.state;try{window.history.pushState({key:n,state:i},"",e)}catch(t){window.location.assign(e)}b.location=t,h="push"}},cancel:Bi},replace:{finish:function(t){return function(){var e=l(t),n=t.key,i=t.state;try{window.history.replaceState({key:n,state:i},"",e)}catch(t){window.location.replace(e)}b.location=t,h="replace"}},cancel:Bi}}),p=d.emitNavigation,f=d.cancelPending,g=d.createNavigation,m=d.prepare,C=!1;function v(t){if(C)C=!1;else if(!function(t){return void 0===t.state&&-1===navigator.userAgent.indexOf("CriOS")}(t)){f("pop");var e=u(t.state),n=b.location.key[0]-e.key[0],i=function(){C=!0,window.history.go(n)};c({to:e,from:b.location,action:"pop"},(function(){p(g(e,"pop",(function(){b.location=e,h="pop"}),(function(t){"pop"!==t&&i()})))}),i)}}window.addEventListener("popstate",v,!1);var b={location:u(),current:function(){p(g(b.location,h,Bi,Bi))},url:l,navigate:function(t,e){void 0===e&&(e="anchor");var n=m(t,e);f(n.action),c({to:n.location,from:b.location,action:n.action},(function(){p(n)}))},go:function(t){window.history.go(t)},confirm:a,cancel:function(){f()},destroy:function(){window.removeEventListener("popstate",v),p=Bi}};return b}),function(t){var e={},n=t.map((function(t){return Oi(t,e)}));return{match:function(t){for(var e=0,i=n;e{const i=n[e.controller];if(!i)throw new Error(`Did you forget to specify controller for route "${e.name}"?`);const r={name:e.name,path:eo(e),...i(e)};return e.meta&&!1===e.meta.encode&&(r.pathOptions={compile:{encode:t=>t}}),e.children&&(r.children=t(e.children,n)),r}))}(Ii,{Home:()=>({respond:()=>({body:{main:Kn``}})}),Page(t){const e=t.meta?t.meta.categories:[];return{resolve:Jr((({params:n})=>({...n,categories:e,id:no(t.path,n)}))),respond:Yr}}}).concat({name:"notFound",path:"(.*)",respond({match:t}){const{pathname:e}=t.location,n=e.indexOf("/",1),i=-1===n?e.slice(1):e.slice(1,n),{search:r,hash:o}=window.location;return gr.includes(i)?{body:Kn``}:{redirect:{url:`/${mr}${e}${r}${o}`}}}})),{history:{base:function(t,e){if("string"!=typeof t||"/"!==t.charAt(0)||"/"===t.charAt(t.length-1))throw new Error('The base segment "'+t+'" is not valid. The "base" option must begin with a forward slash and end with a non-forward slash character.');var n=e||{},i=n.emptyRoot,r=void 0!==i&&i,o=n.strict,s=void 0!==o&&o;return{add:function(e){if(r){if("/"===e)return t;if(e.startsWith("/?")||e.startsWith("/#"))return""+t+e.substr(1)}else if("?"===e.charAt(0)||"#"===e.charAt(0))return e;return""+t+e},remove:function(e){if(""===e)return"";if(!function(t,e){return new RegExp("^"+e+"(\\/|\\?|#|$)","i").test(t)}(e,t)){if(s)throw new Error('Expected a string that begins with "'+t+'", but received "'+e+'".');return e}if(e===t){if(s&&!r)throw new Error('Received string "'+t+'", which is the same as the base, but "emptyRoot" is not true.');return"/"}return e.substr(t.length)}}}(Pi),query:to}}),ro=io.url;io.url=t=>{const e={lang:Cr(),...t.params};return ro({...t,params:e})},"scrollRestoration"in window.history&&(window.history.scrollRestoration="manual");const oo=window.visualViewport||window;const so=$n(((t,e)=>n=>{const i=function(t,e="default"){const n="string"==typeof t?new Date(t):t;return fr(pr.lang,e).format(n)}(t,e);n.value!==i&&n.setValue(i)})),ao=(t,e,n)=>Yi((()=>Xi(t,e,n))),co=$n(((t,e)=>Yi((()=>er(Xi(t,e))))));class uo extends pi{constructor(){super(),this.Ut=null,this.Vt=null,this.Rt=null,this.Gt=!1,this.ready=!1,this.Ht=[]}connectedCallback(){super.connectedCallback(),this.Ht.push(io.observe((t=>{this.Ut=t.response,this.Zt()}),{initial:!0})),this.Ht.push(function(t,e){const n=window.matchMedia(t),i=()=>e(n.matches);return oo.addEventListener("resize",i),i(),()=>oo.removeEventListener("resize",i)}("(min-width: 768px)",(t=>this.Gt=!t))),document.addEventListener("keypress",(t=>{t.ctrlKey&&t.shiftKey&&22===t.keyCode&&console.log("bd58bb2")}),!1)}disconnectedCallback(){super.disconnectedCallback(),this.Ht.forEach((t=>t()))}updated(){this.Rt=this.Rt||this.shadowRoot.querySelector("menu-drawer")}Xt(){this.Rt&&this.Rt.toggle()}Zt(){this.Rt&&this.Rt.close()}notify(t,e={}){const n=document.createElement("app-notification");n.message=t,"function"==typeof e.onClick&&n.addEventListener("click",e.onClick,!1),this.Vt=this.Vt||function(){const t=document.createElement("div");return Object.assign(t.style,{position:"fixed",right:"10px",bottom:"10px",zIndex:50,width:"320px"}),document.body.appendChild(t),t}(),this.Vt.appendChild(n)}Wt(t){return this.Gt?Kn`${t}

${ao("menu.root")}

`:null}Kt(t){return"home"===this.Ut.name?"":this.Gt?"col-1":t?"col-2":"col-1"}render(){if(!this.Ut||!this.ready)return null;const{body:t}=this.Ut,e=t.sidebar?gi(t.sidebar):"";return Kn`
${this.Wt(e)}
${e}
${gi(t.main||t)}
`}}dn(uo,"cName","casl-docs"),dn(uo,"properties",{ready:{type:Boolean},Gt:{type:Boolean},Ut:{type:Object}}),uo.styles=[hi`:host{display:block}.stop-war{position:fixed;z-index:1000;top:5px;right:5px}`];var lo=hi`.row{display:flex}.row.wrap{flex-wrap:wrap}.row.align-center{align-items:center}.row.align-start{align-items:start}.col{flex-grow:1;flex-basis:0;max-width:100%}.col-fixed{flex-grow:0;flex-basis:auto}@media (min-width:768px){.container{margin:auto;max-width:1200px}}`;class ho extends pi{constructor(){super(),this.theme="default",this.menu=null,this.layout=""}render(){return Kn`
`}}dn(ho,"cName","app-root"),dn(ho,"properties",{theme:{type:String},layout:{type:String},menu:{type:Object}}),ho.styles=[lo,hi`:host{display:block}app-header{position:relative;position:sticky;top:0;z-index:10;background:rgba(255,255,255,.9);box-shadow:rgba(0,0,0,.1) 0 1px 2px 0}.col-1>main,.row>main{min-width:0;padding-left:10px;padding-right:10px}.aside,main{padding-bottom:30px}aside{display:none}@media (min-width:768px){.aside{position:sticky;top:54px;height:calc(100vh - 132px);overflow-y:auto;padding-top:2rem}.row>aside{display:block;flex-basis:260px;max-width:260px;min-width:200px;padding-left:20px;box-shadow:rgba(0,0,0,.1) 1px -1px 2px 0}.row>main{flex-basis:80%;margin:0 auto;max-width:800px}}`];var po=hi`.md pre{overflow:auto}.md a,.md app-link{color:#81a2be;text-decoration:underline;border-bottom:0}.md a:hover,.md app-link:hover{text-decoration:none;border-bottom:0}.md code:not([class]){color:#de935f;background:#f8f8f8;padding:2px 5px;margin:0 2px;border-radius:2px;white-space:nowrap;font-family:"Roboto Mono",Monaco,courier,monospace}.alert,.md blockquote{padding:.8rem 1rem;margin:0;border-left:4px solid #81a2be;background-color:#f8f8f8;position:relative;border-bottom-right-radius:2px;border-top-right-radius:2px}.alert:before,.md blockquote:before{position:absolute;top:.8rem;left:-12px;color:#fff;background:#81a2be;width:20px;height:20px;border-radius:100%;text-align:center;line-height:20px;font-weight:700;font-size:14px;content:'i'}.alert>p:first-child,.md blockquote>p:first-child{margin-top:0}.alert>p:last-child,.md blockquote>p:last-child{margin-bottom:0}.alert+.alert,.md blockquote+blockquote{margin-top:20px}.md table{border-collapse:collapse;width:100%}.md .responsive{width:100%;overflow-x:auto}.md td,.md th{border:1px solid #c6cbd1;padding:6px 13px}.md tr{border-top:1px solid #c6cbd1}.md .editor{width:100%;height:500px;border:0;border-radius:4px;overflow:hidden}.md h3::before{margin-left:-15px;margin-right:5px;content:'#';color:#81a2be}`,fo=hi`h1{margin:2rem 0 1rem;font-size:2rem}h2{padding-bottom:.3rem;border-bottom:1px solid #ddd}h1,h2,h3,h4,h5{font-weight:400;cursor:pointer}.description{margin-top:10px;color:#333;padding-left:5px}.description img{max-width:100%;height:auto}.description>h1{display:none}`,go=hi`.btn{display:inline-block;outline:0;text-decoration:none;background-color:transparent;border:1px solid #877e87;border-radius:1rem;padding:.375rem 1.5rem;font-weight:700;appearance:none;-webkit-appearance:none;-moz-appearance:none;transition:color .2s cubic-bezier(.08,.52,.52,1),background .2s cubic-bezier(.08,.52,.52,1),border-color .2s cubic-bezier(.08,.52,.52,1);cursor:pointer;color:#444}.btn:hover{background-color:#202428;border-color:#202428;color:#fff}`,mo=hi`.hljs,code[data-filename]{display:block;overflow-x:auto;padding:1rem;background:#1d1f21;border-radius:7px;box-shadow:rgba(0,0,0,.55) 0 11px 11px 0;font-size:.8rem;color:#c5c8c6}.hljs span::selection,.hljs::selection,code[data-filename] span::selection,code[data-filename]::selection{background:#373b41}code[data-filename]{position:relative;padding-top:22px}code[data-filename]:before{position:absolute;top:0;right:0;font-size:.7rem;content:attr(data-filename);padding:2px 6px;border-radius:0 0 0 7px;border-left:1px solid #c5c8c6;border-bottom:1px solid #c5c8c6;color:#fff}.hljs-name,.hljs-title{color:#f0c674}.hljs-comment{color:#707880}.hljs-meta,.hljs-meta .hljs-keyword{color:#f0c674}.hljs-deletion,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol{color:#c66}.hljs-addition,.hljs-doctag,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-string{color:#b5bd68}.hljs-attribute,.hljs-code,.hljs-selector-id{color:#b294bb}.hljs-bullet,.hljs-keyword,.hljs-selector-tag,.hljs-tag{color:#81a2be}.hljs-subst,.hljs-template-tag,.hljs-template-variable,.hljs-variable{color:#8abeb7}.hljs-built_in,.hljs-builtin-name,.hljs-quote,.hljs-section,.hljs-selector-class,.hljs-type{color:#de935f}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}@media (min-width:768px){code[data-filename]{padding-top:1rem}code[data-filename]:before{font-size:inherit;opacity:.5;transition:opacity .5s}code[data-filename]:hover:before{opacity:1}}`,Co=hi`.alert-warning{border-left-color:#856404;background-color:#fff3cd}.alert-warning:before{background:#856404;content:'w'}`;const vo={github:Kn`GitHub icon`,twitter:Kn`Twitter icon`,medium:Kn`Medium icon`};class bo extends pi{constructor(...t){super(...t),dn(this,"year",(new Date).getFullYear())}render(){return Kn``}}dn(bo,"cName","app-footer"),bo.styles=[po,hi`:host{--app-footer-background:#838385;--app-footer-text-color:#fff;--app-footer-text-size:13px;display:block;padding:40px 0;background-color:#303846;font-size:var(--app-footer-text-size);text-align:center;color:var(--app-footer-text-color)}.copyright{white-space:pre-line}.links svg{width:18px;height:18px}.links a{margin:0 5px;text-decoration:none}`];class wo extends pi{constructor(){super(),this.theme="default",this.menu={items:[]},this.Qt=!1}Jt(){this.dispatchEvent(new CustomEvent("toggle-menu",{bubbles:!0,composed:!0}))}Yt(){return"default"===this.theme?Kn`
`:Kn``}te(){this.Qt=!this.Qt}ee(){return"mobile"!==this.theme?null:Kn``}update(t){return t.has("theme")&&(this.Qt="mobile"===this.theme),super.update(t)}render(){return Kn`

Do you like this package?

Support Ukraine 🇺🇦
${this.ee()}
${this.Yt()}
`}}dn(wo,"cName","app-header"),dn(wo,"properties",{menu:{type:Object},theme:{type:String},Qt:{type:Boolean}}),wo.styles=[lo,hi`:host{display:block}app-link{color:#000;text-decoration:none}.header{position:relative;display:flex;align-items:center;justify-content:center;padding:0 10px 0 1rem}.header-notification{background:rgba(84,172,237,.18);display:flex;flex-wrap:wrap;flex-direction:column;align-items:center;padding:10px;gap:0}.header-notification p{margin:0}.logo{padding-top:4px;line-height:1;font-weight:700;font-size:2rem;font-family:"Stardos Stencil","Helvetica Neue",Arial,sans-serif;vertical-align:middle}.logo:hover{border-bottom-color:transparent}.menu-toggle{position:absolute;left:0;background:0 0;border:0;cursor:pointer}.menu-toggle:focus{outline:0}app-menu{margin-left:10px}.full-width-search{position:absolute;right:0;box-sizing:border-box;width:100%;height:100%;transition:width .3s ease-in-out}.full-width-search[compact]{width:35px;padding:0;height:auto}versions-select{vertical-align:middle;margin-left:-5px}@media (min-width:768px){.header{justify-content:space-between}.header-notification{flex-direction:row;justify-content:center;gap:5px}.logo{font-size:3rem}app-quick-search{border-radius:15px;border:1px solid #e3e3e3}versions-select{vertical-align:top;margin-left:-10px}}`];class yo extends pi{constructor(){super(),this.to="",this.active=!1,this.query=null,this.params=null,this.hash="",this.nav=!1,this.ne=null,this.ie=null}oe(){const t=this.se(),{pathname:e}=window.location;return!(t.length>e.length)&&(t===e||e.startsWith(t))}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this.ae.bind(this),!1),this.nav&&(this.ie=io.observe((()=>{this.active=this.oe()}),{initial:!0}))}disconnectedCallback(){super.disconnectedCallback(),this.ie&&this.ie()}update(t){const e=["to","query","params","hash"].some((e=>t.has(e)));if((null===this.ne||e)&&(this.ne=this.ce()),this.nav&&t.has("active")){const t=this.active?"add":"remove";this.classList[t]("active")}return super.update(t)}se(){return this.ne=this.ne||this.ce(),this.ne}ce(){return io.url({name:this.to,hash:this.hash,params:this.params,query:this.query})}render(){return Kn``}ae(t){t.ctrlKey||(t.preventDefault(),io.navigate({url:this.ne}))}}dn(yo,"cName","app-link"),dn(yo,"properties",{to:{type:String},params:{type:Object},query:{type:Object},hash:{type:String},active:{type:Boolean},nav:{type:Boolean}}),yo.styles=hi`:host{display:inline-block;vertical-align:baseline;text-decoration:none;cursor:pointer;border-bottom:2px solid transparent}:host(.active),:host(:hover){border-bottom-color:#81a2be}a{font-size:inherit;color:inherit;text-decoration:inherit}a:hover{text-decoration:inherit}a.active{color:var(--app-link-active-color)}`;class xo extends pi{constructor(){super(),this.items=[]}render(){return Kn``}ue(t,e){const n=t.map((t=>Kn``));return Kn`
    ${n}
`}le({children:t}){return t?this.ue(t,"dropdown "+(this.expanded?"":"expandable")):""}}dn(xo,"cName","app-menu"),dn(xo,"properties",{items:{type:Array},expanded:{type:Boolean}}),xo.styles=hi`:host{display:block}ul{padding:0;margin:0}.dropdown-container{display:inline-block;position:relative;margin:0 1rem}.dropdown-container:hover .dropdown{display:block}.dropdown.expandable{display:none;max-height:calc(100vh - 61px);overflow-y:auto;position:absolute;top:100%;right:-15px;background-color:#fff;border:1px solid #ddd;border-bottom-color:#ccc;border-radius:4px}.dropdown{box-sizing:border-box;padding:10px 0;text-align:left;white-space:nowrap}.dropdown li{display:block;margin:0;line-height:1.6rem}.dropdown li>ul{padding-left:0}.dropdown li:first-child h4{margin-top:0;padding-top:0;border-top:0}.dropdown a,.dropdown app-link,.dropdown h4{padding:0 24px 0 20px}.dropdown h4{margin:.45em 0 0;padding-top:.45rem;border-top:1px solid #eee}.dropdown-container a,.dropdown-container app-link{text-decoration:none}.dropdown a,.dropdown app-link,.nav a,.nav app-link{display:block;color:#202428;text-decoration:none}.dropdown a:hover,.dropdown app-link:hover,.nav a:hover,.nav app-link.active,.nav app-link:hover{color:#81a2be;border-bottom-color:transparent}.link{display:block;cursor:pointer;line-height:40px}.link:after{display:inline-block;content:'';vertical-align:middle;margin-top:-1px;margin-left:6px;margin-right:-14px;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #4f5959}`;class ko extends pi{constructor(){super(),this.article=null,this.category=""}render(){const{article:t}=this,e=this.category||t.categories[0];return Kn`${ao("article.author")} ${t.commentsCount||0}${ao("article.readMore")}`}}dn(ko,"cName","app-article-details"),dn(ko,"properties",{article:{type:Object,attribute:!1},category:{type:String}}),ko.styles=[hi`:host{margin-top:10px;color:var(--app-article-details-color,#999);font-size:11px}:host>*{margin-right:10px}app-link{margin-right:10px;color:var(--app-link-active-color)}app-link>[class^=icon-]{margin-right:5px}`];class Ao extends pi{constructor(){super(),this.he=null,this.de=Cr()}connectedCallback(){super.connectedCallback(),this.he=Zi((t=>{this.de=t,this.reload().then((()=>this.requestUpdate()))}))}disconnectedCallback(){this.he(),super.disconnectedCallback()}reload(){return Promise.reject(new Error(`${this.constructor.cName} should implement "reload" method`))}}function Fo(t){const e=t?`${t} - `:"";document.title=e+vr("name")}function Eo(t,e){if("object"==typeof t)return void Object.keys(t).forEach((e=>Eo(e,t[e])));const n=vr(`meta.${t}`),i=Array.isArray(e)?e.concat(n).join(", "):e||n;(function(t){let e=document.head.querySelector(`meta[name="${t}"]`);return e||(e=document.createElement("meta"),e.setAttribute("name",t),document.head.appendChild(e)),e})(t).setAttribute("content",i.replace(/[\n\r]+/g," "))}function $o({response:t}){const e=document.documentElement;e.lang!==t.params.lang&&(e.lang=t.params.lang);const n=`meta.${t.name}`;lr(n,pr)?(Fo(vr(`${n}.title`)),Eo("keywords",vr(`${n}.keywords`)),Eo("description",vr(`${n}.description`))):(Fo(),Eo("keywords"),Eo("description"))}function jo(t,e){const n=t.getElementById(e);if(!n)return;n.scrollIntoView(!0),document.documentElement.scrollTop-=85}function So(t,e){return er(dr(t.content,e))}class Oo extends Ao{constructor(){super(),this.pe=null,this.nav=[],this.name=null,this.vars={},this.type="page",this.content=So}connectedCallback(){super.connectedCallback(),this.shadowRoot.addEventListener("click",(t=>{!function(t,e){let n;if("H"===e.tagName[0]&&e.id)n=e.id;else{const n=function(t,e){let n=t,i=0;for(;n&&i<3;){if(n.tagName===e)return n;n=n.parentNode,i++}return null}(e,"A"),i=n?n.href.indexOf("#"):-1;-1!==i&&jo(t,n.href.slice(i+1))}if(n){const{location:e}=io.current().response,i=`${e.pathname}${window.location.search}#${n}`;io.navigate({url:i}),jo(t,n)}}(this.shadowRoot,t.target)}),!1)}async updated(t){(null===this.pe||t.has("name")||t.has("type"))&&await this.reload()}async reload(){this.pe=await Kr(this.type).load(Cr(),this.name),function(t){const e=t.meta||{};Fo(t.title),Eo("keywords",e.keywords||""),Eo("description",e.description||"")}(this.pe),await this.updateComplete,function(t){const{hash:e}=io.current().response.location;e?jo(t,e):window.scroll(0,0)}(this.shadowRoot)}ue(){const[t,e]=this.nav;return Kn``}render(){return this.pe?Kn`

${dr(this.pe.title)}

${this.content(this.pe,this.vars)}
${this.nav&&this.nav.length?this.ue():""}`:Kn``}}dn(Oo,"cName","app-page"),dn(Oo,"properties",{type:{type:String},name:{type:String},vars:{type:Object,attribute:!1},content:{type:Function,attribute:!1},nav:{type:Array},pe:{type:Object}}),Oo.styles=[fo,po,mo,hi`:host{display:block}app-page-nav{margin-top:20px}`];class zo extends pi{constructor(){super(),this.next=null,this.prev=null,this.pageType="page"}fe(t){const e=this[t];return e?Kn`${e.title}`:""}render(){return Kn`${this.fe("prev")} ${this.fe("next")}`}}dn(zo,"cName","app-page-nav"),dn(zo,"properties",{next:{type:Object},prev:{type:Object},pageType:{type:String}}),zo.styles=hi`:host{display:block}:host:after{display:table;clear:both;content:''}app-link{color:#81a2be;text-decoration:none}app-link:hover{border-bottom-color:transparent}.next{float:right;margin-left:30px}.next:after,.prev:before{display:inline-block;vertical-align:middle;content:'⇢'}.prev:before{content:'⇠'}`;const Mo=["isomorphic","versatile","declarative","typesafe","treeshakable"];function Do(t){return Kn`

${ao(`features.${t}.title`)}

${co(`features.${t}.description`)}

`}const To=()=>Kn`
${Mo.map(Do)}
`;To.styles=[hi`.features{padding:1rem 0;display:-ms-grid;display:grid;justify-content:center;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));-ms-grid-columns:${li(Mo.map((()=>"minmax(200px, 1fr)")).join(" "))}}.feature{padding:1rem}.feature h3{font-size:1.4rem}.feature p:last-child{margin-bottom:0}`];class Lo extends pi{render(){return Kn`

${ao("slogan")}

${ao("buttons.start")}${ao("buttons.source")}
${co("exampleCode")}
${To()}`}}dn(Lo,"cName","home-page"),Lo.styles=[lo,go,To.styles,mo,hi`:host{display:block}.bg{background:#fff;background:linear-gradient(90deg,#fff 0,#dee4ea 41%,#ebf5fd 60%,#525457 100%)}header{justify-content:center;padding:2rem 1rem}.main{padding-top:22px;text-align:center;justify-content:center}h1{white-space:pre-line;font-size:2.2rem;font-family:"Stardos Stencil","Helvetica Neue",Arial,sans-serif}.buttons{display:inline-block;text-align:center}.buttons app-link{margin-right:5px}github-button{display:block;margin-top:10px}.details{min-width:300px}.col-example{display:none}@media (min-width:768px){.main>img{margin-right:30px}}@media (min-width:1024px){.main{text-align:left}.col-example{display:block}.example code{font-size:.7rem}}@media (min-width:1200px){.example code{font-size:.8rem}}`];var _o=window.document,No=window.Math,Bo=window.HTMLElement,Io=window.XMLHttpRequest,qo=function(t){return function(e,n,i){var r=t.createElement(e);if(null!=n)for(var o in n){var s=n[o];null!=s&&(null!=r[o]?r[o]=s:r.setAttribute(o,s))}if(null!=i)for(var a=0,c=i.length;a'}}},download:{heights:{16:{width:16,path:''}}},eye:{heights:{16:{width:16,path:''}}},heart:{heights:{16:{width:16,path:''}}},"issue-opened":{heights:{16:{width:16,path:''}}},"mark-github":{heights:{16:{width:16,path:''}}},package:{heights:{16:{width:16,path:''}}},play:{heights:{16:{width:16,path:''}}},"repo-forked":{heights:{16:{width:16,path:''}}},"repo-template":{heights:{16:{width:16,path:''}}},star:{heights:{16:{width:16,path:''}}}},Yo=function(t,e){t=Vo(t).replace(/^octicon-/,""),Uo(Jo,t)||(t="mark-github");var n=e>=24&&24 in Jo[t].heights?24:16,i=Jo[t].heights[n];return'"},ts={},es=function(t,e){var n=ts[t]||(ts[t]=[]);if(!(n.push(e)>1)){var i=function(t){var e;return function(){e||(e=1,t.apply(this,arguments))}}((function(){for(delete ts[t];e=n.shift();)e.apply(null,arguments)}));if(Go){var r=new Io;Zo(r,"abort",i),Zo(r,"error",i),Zo(r,"load",(function(){var t;try{t=JSON.parse(this.responseText)}catch(t){return void i(t)}i(200!==this.status,t)})),r.open("GET",t),r.send()}else{var o=this||window;o.ge=function(t){o.ge=null,i(200!==t.meta.status,t.data)};var s=qo(o.document)("script",{async:!0,src:t+(-1!==t.indexOf("?")?"&":"?")+"callback=_"}),a=function(){o.ge&&o.ge({meta:{}})};Zo(s,"load",a),Zo(s,"error",a),s.readyState&&function(t,e,n){var i="readystatechange",r=function(){if(e.test(t.readyState))return Xo(t,i,r),n.apply(this,arguments)};Zo(t,i,r)}(s,/de|m/,a),o.document.getElementsByTagName("head")[0].appendChild(s)}}},ns=function(t,e,n){var i=qo(t.ownerDocument),r=t.appendChild(i("style",{type:"text/css"})),o="body{margin:0}a{text-decoration:none;outline:0}.widget{display:inline-block;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:0;line-height:0;white-space:nowrap}.btn,.social-count{position:relative;display:inline-block;height:14px;padding:2px 5px;font-size:11px;font-weight:600;line-height:14px;vertical-align:bottom;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-repeat:repeat-x;background-position:-1px -1px;background-size:110% 110%;border:1px solid}.btn{border-radius:.25em}.btn:not(:last-child){border-radius:.25em 0 0 .25em}.social-count{border-left:0;border-radius:0 .25em .25em 0}.widget-lg .btn,.widget-lg .social-count{height:20px;padding:3px 10px;font-size:12px;line-height:20px}.octicon{display:inline-block;vertical-align:text-top;fill:currentColor}"+Qo(e["data-color-scheme"]);r.styleSheet?r.styleSheet.cssText=o:r.appendChild(t.ownerDocument.createTextNode(o));var s="large"===Vo(e["data-size"]),a=i("a",{className:"btn",href:e.href,rel:"noopener",target:"_blank",title:e.title||void 0,"aria-label":e["aria-label"]||void 0,innerHTML:Yo(e["data-icon"],s?16:14)},[" ",i("span",{},[e["data-text"]||""])]),c=t.appendChild(i("div",{className:"widget"+(s?" widget-lg":"")},[a])),u=a.hostname.replace(/\.$/,"");if(("."+u).substring(u.length-Ro.length)!=="."+Ro)return a.removeAttribute("href"),void n(c);var l=(" /"+a.pathname).split(/\/+/);if(((u===Ro||u==="gist."+Ro)&&"archive"===l[3]||u===Ro&&"releases"===l[3]&&("download"===l[4]||"latest"===l[4]&&"download"===l[5])||u==="codeload."+Ro)&&(a.target="_top"),"true"===Vo(e["data-show-count"])&&u===Ro&&"marketplace"!==l[1]&&"sponsors"!==l[1]&&"orgs"!==l[1]&&"users"!==l[1]&&"-"!==l[1]){var h,d;if(!l[2]&&l[1])d="followers",h="?tab=followers";else if(!l[3]&&l[2])d="stargazers_count",h="/stargazers";else if(l[4]||"subscription"!==l[3])if(l[4]||"fork"!==l[3]){if("issues"!==l[3])return void n(c);d="open_issues_count",h="/issues"}else d="forks_count",h="/network/members";else d="subscribers_count",h="/watchers";var p=l[2]?"/repos/"+l[1]+"/"+l[2]:"/users/"+l[1];es.call(this,"https://api.github.com"+p,(function(t,e){if(!t){var r=e[d];c.appendChild(i("a",{className:"social-count",href:e.html_url+h,rel:"noopener",target:"_blank","aria-label":r+" "+d.replace(/_count$/,"").replace("_"," ").slice(0,r<2?-1:void 0)+" on GitHub"},[(""+r).replace(/\B(?=(\d{3})+(?!\d))/g,",")]))}n(c)}))}else n(c)},is=window.devicePixelRatio||1,rs=function(t){return(is>1?No.ceil(No.round(t*is)/is*2)/2:No.ceil(t))||0},os=function(t,e){t.style.width=e[0]+"px",t.style.height=e[1]+"px"},ss=function(t,e){if(null!=t&&null!=e)if(t.getAttribute&&(t=function(t){for(var e={href:t.href,title:t.title,"aria-label":t.getAttribute("aria-label")},n=["icon","color-scheme","text","size","show-count"],i=0,r=n.length;i{this.shadowRoot.firstChild?this.shadowRoot.replaceChild(t,this.shadowRoot.firstChild):this.shadowRoot.appendChild(t)}))}}dn(as,"cName","github-button"),dn(as,"properties",{href:{type:String},size:{type:String},theme:{type:String},showCount:{type:Boolean},text:{type:String}});const cs={dropdown(t){const e=t.hints.title||t.doc.title,n=t.hints.headings||t.doc.headings||[];return Kn`
${er(e)}
${n.map((e=>Kn`${er(e.title)}`))}
`},page(t){const e=t.hints.title||t.doc.title,n=t.hints.headings||t.doc.headings||[];return Kn`${n.map((n=>Kn`${er(`${e} › ${n.title}`)}`))}`}};const us=Kn``,ls=Kn``;class hs extends pi{constructor(){super(),this.value="",this.suggestionsType="dropdown",this.compact=!1,this.toggler=!1,this.Ce=null,this.ve=this.ve.bind(this),this.be=function(t,e){let n;return function(...i){clearTimeout(n),n=setTimeout((()=>t.apply(this,i)),e)}}(this.be,500),this.ie=null}we(t){this.value=t.trim(),this.dispatchEvent(new CustomEvent("update",{detail:this.value}))}connectedCallback(){super.connectedCallback(),document.addEventListener("click",this.ve,!1),this.ie=io.observe((()=>this.ye()))}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("click",this.ve,!1),this.ie()}ye(){this.value&&(this.we(""),this.Ce=null,this.dispatchEvent(new CustomEvent("reset")))}ve(t){this.shadowRoot.contains(t.target)||(this.Ce=null)}async be(){if(!this.value)return void(this.Ce=null);const t=(await Kr("page").search(Cr(),this.value,{prefix:!0})).reduce(((t,e)=>{const n=e.doc.categories[0];return t.has(n)||t.set(n,[]),t.get(n).push(e),t}),new Map);this.Ce=Array.from(t)}xe(t){this.we(t.target.value),this.be()}ke(){this.dispatchEvent(new CustomEvent("click-icon"))}render(){return Kn`
${function(t,e){if(!t)return"";if(!t.length)return Kn`
${ao("search.noMatch")}
`;const n=cs[e||"dropdown"];return Kn`
${t.map((([t,e])=>Kn`
${ao(`categories.${t}`)}
${e.map(n)}`))}
`}(this.Ce,this.suggestionsType)}
`}}dn(hs,"cName","app-quick-search"),dn(hs,"properties",{value:{type:String},suggestionsType:{type:String},compact:{type:Boolean},toggler:{type:Boolean},Ce:{type:Array}}),hs.styles=[lo,hi`:host{display:block}.search-form{position:relative;border-radius:inherit;height:100%}.input{display:block;padding:1px 6px;color:#273849;transition:border-color 1s;white-space:nowrap;background:#fff;height:100%;border-radius:inherit}svg{width:16px;height:16px}.icon{line-height:.7;cursor:pointer}.icon,input{display:inline-block;vertical-align:middle}.input path{fill:#e3e3e3}input{height:100%;font-size:.9rem;box-sizing:border-box;outline:0;width:calc(100% - 20px);margin-left:5px;border:0;background-color:transparent}.suggestions{position:absolute;left:8px;z-index:1000;top:120%;background:#fff;padding:5px;overflow-y:auto}.suggestions.dropdown{border-radius:4px;border:1px solid #e3e3e3;width:500px;max-height:500px}.suggestions.page{left:-10px;width:101%;height:calc(100vh - 50px);border:0;border-radius:0}input:focus{outline:transparent}h5{margin:0;padding:5px 10px;background-color:#1b1f23;color:#fff}app-link{display:block;padding:5px;font-size:.9rem;border-bottom:0}app-link:hover{background:#eee}.title{flex-basis:40%;max-width:40%;border-right:1px solid #e3e3e3}.item{border-bottom:1px solid #e3e3e3}mark{font-weight:700;background:0 0}.compact .input{border-color:transparent;background:0 0}.compact input{display:none}.compact .input path{fill:#1b1f23}`];class ds extends pi{render(){return Kn``}Ae(t){const e=t.target.value,n=io.current().response;io.navigate({url:io.url({name:n.name,params:{...n.params,lang:e},query:n.location.query,hash:n.location.hash})})}}dn(ds,"cName","app-lang-picker");const ps={liqpay:{icon:"data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20width%3D%22107px%22%20height%3D%2222px%22%20viewBox%3D%220%200%20107%2022%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%20%20%20%20%20%20%20%20%3Ctitle%3EF598AEA9-571B-4BDB-8FEC-38F074CC2EC6%3C%2Ftitle%3E%20%20%20%20%3Cdesc%3ECreated%20with%20sketchtool.%3C%2Fdesc%3E%20%20%20%20%3Cdefs%3E%3C%2Fdefs%3E%20%20%20%20%3Cg%20id%3D%22Personal%22%20stroke%3D%22none%22%20stroke-width%3D%221%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%20%20%20%20%20%20%20%20%3Cg%20id%3D%22Site_Personal-Copy%22%20transform%3D%22translate%28-60.000000%2C%20-12.000000%29%22%20fill%3D%22%237AB72B%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Cg%20id%3D%22Header%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cg%20id%3D%22logo_liqpay%22%20transform%3D%22translate%2860.000000%2C%2012.000000%29%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20points%3D%2286.9547861%201.77262293%2094.3504229%2010.3403775%2086.9547861%2018.9094274%2089.0061259%2020.6791964%2097.9295835%2010.3403775%2089.0061259%200.000910899696%22%3E%3C%2Fpolygon%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20points%3D%2295.9493035%201.77262293%20103.344617%2010.3403775%2095.9493035%2018.9094274%2097.9999958%2020.6791964%20106.923777%2010.3403775%2097.9999958%200.000910899696%22%3E%3C%2Fpolygon%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M9.24568572%2C18.2702718%20C9.24568572%2C18.4533859%209.23654857%2C18.6068499%209.21827428%2C18.7303379%20C9.19967369%2C18.8541517%209.16997797%2C18.9593934%209.12886088%2C19.0463889%20C9.08741743%2C19.1337102%209.03716313%2C19.1975721%208.97744546%2C19.2386262%20C8.91772771%2C19.280006%208.8469149%2C19.300533%208.76435437%2C19.300533%20L0.894994994%2C19.300533%20C0.68386186%2C19.300533%200.484476477%2C19.2298288%200.296512512%2C19.0877688%20C0.108222222%2C18.9457087%200.0142402401%2C18.6961261%200.0142402401%2C18.339021%20L0.0142402401%2C1.88286186%20C0.0142402401%2C1.80955105%200.0325145146%2C1.74536336%200.0693893895%2C1.69062462%20C0.105937938%2C1.63556006%200.170224224%2C1.59222523%200.261921922%2C1.55996847%20C0.353619619%2C1.52803754%200.477297297%2C1.50066817%200.633281284%2C1.47753454%20C0.789265269%2C1.45505255%200.977229228%2C1.44332282%201.1974995%2C1.44332282%20C1.42658058%2C1.44332282%201.61682883%2C1.45505255%201.76824425%2C1.47753454%20C1.91965966%2C1.50066817%202.04105306%2C1.52803754%202.13307708%2C1.55996847%20C2.22444845%2C1.59222523%202.28906106%2C1.63556006%202.32560961%2C1.69062462%20C2.36215816%2C1.74568919%202.38075876%2C1.80955105%202.38075876%2C1.88286186%20L2.38075876%2C17.254021%20L8.76435437%2C17.254021%20C8.8469149%2C17.254021%208.91772771%2C17.274548%208.97744546%2C17.3159279%20C9.03683683%2C17.3573078%209.08741743%2C17.4166081%209.12886088%2C17.4941546%20C9.17030434%2C17.5720271%209.19999999%2C17.674988%209.21827428%2C17.8033634%20C9.23654857%2C17.9317387%209.24568572%2C18.0871576%209.24568572%2C18.2702718%20L9.24568572%2C18.2702718%20L9.24568572%2C18.2702718%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M14.2257518%2C18.9434279%20C14.2257518%2C19.0170646%2014.2071512%2C19.0809264%2014.1706026%2C19.1356651%20C14.1337277%2C19.1907297%2014.0694415%2C19.2340646%2013.9780701%2C19.2663214%20C13.886046%2C19.2985781%2013.764979%2C19.3256216%2013.6132373%2C19.3487553%20C13.4618218%2C19.3712372%2013.2715735%2C19.3829669%2013.0424925%2C19.3829669%20C12.8222222%2C19.3829669%2012.6339319%2C19.3712372%2012.4782743%2C19.3487553%20C12.3222903%2C19.3256216%2012.1986126%2C19.2982522%2012.1069149%2C19.2663214%20C12.0152172%2C19.2340646%2011.950931%2C19.1907297%2011.9143824%2C19.1356651%20C11.8775075%2C19.0806006%2011.8592332%2C19.0170646%2011.8592332%2C18.9434279%20L11.8592332%2C1.88286186%20C11.8592332%2C1.80955105%2011.8797918%2C1.74536336%2011.9212352%2C1.69062462%20C11.9626787%2C1.63556006%2012.0312072%2C1.59222523%2012.1274735%2C1.55996847%20C12.2237397%2C1.52803754%2012.3477437%2C1.50066817%2012.4988328%2C1.47753454%20C12.6502483%2C1.45505255%2012.8310331%2C1.44332282%2013.0424925%2C1.44332282%20C13.2715735%2C1.44332282%2013.4618218%2C1.45505255%2013.6132373%2C1.47753454%20C13.7646526%2C1.50066817%2013.886046%2C1.52803754%2013.9780701%2C1.55996847%20C14.0694415%2C1.59222523%2014.1340541%2C1.63556006%2014.1706026%2C1.69062462%20C14.2071512%2C1.74568919%2014.2257518%2C1.80955105%2014.2257518%2C1.88286186%20L14.2257518%2C18.9434279%20L14.2257518%2C18.9434279%20L14.2257518%2C18.9434279%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M36.0592673%2C20.8664519%20C36.0592673%2C21.0769354%2036.0478459%2C21.2532072%2036.025003%2C21.3949414%20C36.0018338%2C21.5370015%2035.9675696%2C21.6468048%2035.9218839%2C21.7246772%20C35.8758718%2C21.8022237%2035.8256176%2C21.8553334%2035.7704684%2C21.8827027%20C35.7153194%2C21.9100721%2035.6601702%2C21.9240826%2035.6053474%2C21.9240826%20C35.4219519%2C21.9240826%2035.1259739%2C21.848491%2034.7180661%2C21.6976336%20C34.3101582%2C21.5467763%2033.8399219%2C21.326518%2033.30801%2C21.038488%20C32.7760981%2C20.7498063%2032.2073113%2C20.3995435%2031.601976%2C19.9873738%20C30.9966406%2C19.5752042%2030.4095796%2C19.0946111%2029.8411191%2C18.5449429%20C29.3917678%2C18.8196141%2028.822981%2C19.0577928%2028.1350851%2C19.2591531%20C27.4471892%2C19.4605135%2026.6493213%2C19.5615195%2025.7411552%2C19.5615195%20C24.4019119%2C19.5615195%2023.2441061%2C19.3643949%2022.2674114%2C18.9707973%20C21.2907167%2C18.5771997%2020.4833854%2C18.0001622%2019.8460701%2C17.2400105%20C19.2084285%2C16.4798588%2018.73395%2C15.5346382%2018.421982%2C14.4036967%20C18.110014%2C13.2727553%2017.9543563%2C11.9746651%2017.9543563%2C10.5094265%20C17.9543563%2C9.09925229%2018.1240461%2C7.82396997%2018.4634254%2C6.6839054%20C18.8028048%2C5.54384084%2019.3118739%2C4.57320571%2019.9906327%2C3.77167418%20C20.6693914%2C2.97046846%2021.5178398%2C2.35237688%2022.5356516%2C1.9173994%20C23.5537898%2C1.48242192%2024.7412913%2C1.26477027%2026.0988088%2C1.26477027%20C27.3734395%2C1.26477027%2028.495023%2C1.46189489%2029.4625806%2C1.85549249%20C30.4301382%2C2.24941592%2031.2417117%2C2.82417268%2031.8976276%2C3.57943694%20C32.5532172%2C4.33502703%2033.0462963%2C5.26688889%2033.3765385%2C6.37469669%20C33.7067808%2C7.48283033%2033.8719019%2C8.7558318%2033.8719019%2C10.1933754%20C33.8719019%2C10.9352808%2033.8281742%2C11.6449294%2033.7410451%2C12.3226472%20C33.6539159%2C13.0006907%2033.5162062%2C13.6415901%2033.3285686%2C14.245997%20C33.1402783%2C14.8504039%2032.904018%2C15.4088694%2032.6201141%2C15.9217192%20C32.3355576%2C16.4348949%2032.0007467%2C16.896916%2031.6156817%2C17.3090856%20C32.284977%2C17.8584279%2032.872038%2C18.2868889%2033.3765385%2C18.593491%20C33.8807127%2C18.9004189%2034.2984104%2C19.1317552%2034.6283263%2C19.2871742%20C34.9585686%2C19.442919%2035.215061%2C19.555003%2035.3987828%2C19.6234265%20C35.5818518%2C19.6921757%2035.7195616%2C19.770048%2035.8115856%2C19.8570436%20C35.902957%2C19.9437132%2035.9675696%2C20.067527%2036.0041181%2C20.2278334%20C36.0406667%2C20.3878138%2036.0592673%2C20.6009039%2036.0592673%2C20.8664519%20L36.0592673%2C20.8664519%20L36.0592673%2C20.8664519%20Z%20M31.3817057%2C10.3582433%20C31.3817057%2C9.35078979%2031.2922923%2C8.41697296%2031.1134655%2C7.55581531%20C30.9346386%2C6.69498349%2030.6363764%2C5.94656156%2030.219005%2C5.3098979%20C29.8016336%2C4.67356006%2029.2442683%2C4.17667568%2028.5475616%2C3.81957057%20C27.8505285%2C3.46246547%2026.9883744%2C3.28391292%2025.9610991%2C3.28391292%20C24.9338238%2C3.28391292%2024.0716697%2C3.47386937%2023.3746366%2C3.85410811%20C22.6776036%2C4.23434685%2022.1111011%2C4.74687087%2021.6754555%2C5.39265766%20C21.2398098%2C6.03811862%2020.9278418%2C6.78686637%2020.7398779%2C7.63857508%20C20.5519139%2C8.49028381%2020.4576056%2C9.39216967%2020.4576056%2C10.3448844%20C20.4576056%2C11.3888304%2020.5447347%2C12.3480616%2020.718993%2C13.2225781%20C20.8932512%2C14.0970946%2021.1866186%2C14.8552913%2021.5994214%2C15.4961907%20C22.0122242%2C16.1374159%2022.5646947%2C16.6343003%2023.2571591%2C16.986518%20C23.9496237%2C17.3390615%2024.8186306%2C17.5153334%2025.8641802%2C17.5153334%20C26.9005926%2C17.5153334%2027.7718839%2C17.3230961%2028.4780541%2C16.9386216%20C29.1842242%2C16.5541471%2029.7526847%2C16.034455%2030.1840881%2C15.3795451%20C30.6151652%2C14.724961%2030.9222382%2C13.9644835%2031.1059599%2C13.0994159%20C31.290008%2C12.2333708%2031.3817057%2C11.3197553%2031.3817057%2C10.3582433%20L31.3817057%2C10.3582433%20L31.3817057%2C10.3582433%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M48.8538698%2C6.7318018%20C48.8538698%2C7.62032883%2048.7070231%2C8.42153453%2048.4136556%2C9.13574474%20C48.1199619%2C9.85028075%2047.7006326%2C10.4592492%2047.155015%2C10.9626502%20C46.6093974%2C11.4663769%2045.9394495%2C11.8554129%2045.1461501%2C12.1300841%20C44.3528509%2C12.4047552%2043.4058519%2C12.5422538%2042.3054795%2C12.5422538%20L40.2829089%2C12.5422538%20L40.2829089%2C18.9434279%20C40.2829089%2C19.0170646%2040.2623504%2C19.0809264%2040.2209069%2C19.1356651%20C40.1794634%2C19.1907297%2040.1155035%2C19.2340646%2040.0283744%2C19.2663214%20C39.9412453%2C19.2985781%2039.8221362%2C19.3256216%2039.6707207%2C19.3487553%20C39.5193053%2C19.3712372%2039.3290571%2C19.3829669%2039.099976%2C19.3829669%20C38.8705686%2C19.3829669%2038.6803203%2C19.3712372%2038.5289049%2C19.3487553%20C38.3774895%2C19.3256216%2038.2557697%2C19.2982522%2038.1640721%2C19.2663214%20C38.0723744%2C19.2340646%2038.0080881%2C19.1907297%2037.9715396%2C19.1356651%20C37.9346647%2C19.0806006%2037.9163904%2C19.0170646%2037.9163904%2C18.9434279%20L37.9163904%2C2.54200751%20C37.9163904%2C2.17577928%2038.0126566%2C1.91479279%2038.2051892%2C1.75904805%20C38.3977217%2C1.6033033%2038.6130971%2C1.52543093%2038.8519679%2C1.52543093%20L42.6628068%2C1.52543093%20C43.0481982%2C1.52543093%2043.4172733%2C1.54139639%2043.7703584%2C1.57365315%20C44.1234435%2C1.60590991%2044.5404885%2C1.67433333%2045.0221461%2C1.77957507%20C45.5034775%2C1.88514264%2045.9942723%2C2.08194144%2046.4942042%2C2.3702973%20C46.9938098%2C2.65865315%2047.4180341%2C3.01380331%2047.7668769%2C3.43477027%20C48.1153934%2C3.85606306%2048.3836336%2C4.34382432%2048.5715976%2C4.89772823%20C48.7595616%2C5.45228378%2048.8538698%2C6.06353303%2048.8538698%2C6.7318018%20L48.8538698%2C6.7318018%20L48.8538698%2C6.7318018%20Z%20M46.3636737%2C6.92403904%20C46.3636737%2C6.20070571%2046.2282483%2C5.5962988%2045.9577237%2C5.11049249%20C45.6871992%2C4.62533784%2045.3523884%2C4.26367117%2044.9532913%2C4.02549249%20C44.5545205%2C3.78731381%2044.1417177%2C3.63645646%2043.7152092%2C3.57226877%20C43.2887007%2C3.50840691%2042.8736136%2C3.47615015%2042.469948%2C3.47615015%20L40.2825826%2C3.47615015%20L40.2825826%2C10.6052192%20L42.4151251%2C10.6052192%20C43.1307588%2C10.6052192%2043.7243464%2C10.513988%2044.1968669%2C10.3305481%20C44.6690611%2C10.1477598%2045.0658739%2C9.89361563%2045.386979%2C9.56811561%20C45.7080841%2C9.24326726%2045.9508708%2C8.8539054%2046.1163183%2C8.40068168%20C46.2811131%2C7.94745795%2046.3636737%2C7.45513513%2046.3636737%2C6.92403904%20L46.3636737%2C6.92403904%20L46.3636737%2C6.92403904%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M65.8029329%2C18.4628348%20C65.87603%2C18.664521%2065.9151892%2C18.8267823%2065.9197578%2C18.9505961%20C65.924%2C19.0744099%2065.8897357%2C19.1682478%2065.8166386%2C19.2324354%20C65.7432153%2C19.2962973%2065.6218218%2C19.3373513%2065.4521321%2C19.3559234%20C65.2821161%2C19.3741697%2065.0553193%2C19.3836186%2064.7710891%2C19.3836186%20C64.4868588%2C19.3836186%2064.2597357%2C19.3767762%2064.090046%2C19.3630916%20C63.9203564%2C19.3494069%2063.7917838%2C19.3262733%2063.704981%2C19.2943423%20C63.6175255%2C19.2624114%2063.5535656%2C19.2187508%2063.5124484%2C19.164012%20C63.471005%2C19.1089475%2063.4321722%2C19.0401982%2063.3956237%2C18.9580901%20L61.8684164%2C14.6311231%20L54.4666827%2C14.6311231%20L53.0083303%2C18.9030256%20C52.9805926%2C18.9854595%2052.9440441%2C19.0568153%2052.898032%2C19.1157898%20C52.85202%2C19.1754159%2052.7857758%2C19.2259189%2052.6986467%2C19.2669729%20C52.6115176%2C19.308027%2052.4875135%2C19.3376772%2052.3272873%2C19.3562493%20C52.1667347%2C19.3744955%2051.9578859%2C19.3839445%2051.7013934%2C19.3839445%20C51.4354375%2C19.3839445%2051.2174514%2C19.3722147%2051.0480881%2C19.3497327%20C50.8783984%2C19.3265991%2050.7592893%2C19.2832643%2050.6904344%2C19.2190766%20C50.6219059%2C19.1552147%2050.5892733%2C19.061051%2050.5941682%2C18.9375631%20C50.5987367%2C18.8137492%2050.6375695%2C18.6511622%2050.710993%2C18.4498018%20L56.6817858%2C1.93857808%20C56.7183344%2C1.8378979%2056.7666306%2C1.75546396%2056.826022%2C1.69127628%20C56.8854134%2C1.62708859%2056.9728689%2C1.57658558%2057.0874094%2C1.54009309%20C57.2019499%2C1.5036006%2057.3487968%2C1.47818619%2057.5276236%2C1.4645015%20C57.7061241%2C1.45081682%2057.9335736%2C1.44397448%2058.2086667%2C1.44397448%20C58.5020341%2C1.44397448%2058.7451472%2C1.45081682%2058.938006%2C1.4645015%20C59.1305386%2C1.47818619%2059.2865225%2C1.5036006%2059.4056316%2C1.54009309%20C59.5247407%2C1.57691141%2059.6164384%2C1.62936937%2059.6807247%2C1.69811862%20C59.7446847%2C1.76686787%2059.7952653%2C1.85158258%2059.8321402%2C1.95226276%20L65.8029329%2C18.4628348%20L65.8029329%2C18.4628348%20L65.8029329%2C18.4628348%20Z%20M58.1398118%2C3.88831982%20L58.1261061%2C3.88831982%20L55.0583123%2C12.7481757%20L61.2490491%2C12.7481757%20L58.1398118%2C3.88831982%20L58.1398118%2C3.88831982%20L58.1398118%2C3.88831982%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M74.4424224%2C12.3910706%20L74.4424224%2C18.9431021%20C74.4424224%2C19.0167388%2074.4241481%2C19.0806006%2074.3875996%2C19.1353393%20C74.351051%2C19.1904039%2074.2870911%2C19.2337387%2074.1960461%2C19.2659955%20C74.105001%2C19.2982522%2073.9816497%2C19.3252958%2073.8266446%2C19.3484295%20C73.6716396%2C19.3709114%2073.4846547%2C19.3826411%2073.266016%2C19.3826411%20C73.0379139%2C19.3826411%2072.8489709%2C19.3709114%2072.6982082%2C19.3484295%20C72.5477718%2C19.3252958%2072.4244204%2C19.2979264%2072.3288068%2C19.2659955%20C72.2328668%2C19.2337387%2072.166949%2C19.1904039%2072.1304004%2C19.1353393%20C72.0938519%2C19.0802747%2072.0759039%2C19.0167388%2072.0759039%2C18.9431021%20L72.0759039%2C12.3910706%20L67.0406887%2C2.36345496%20C66.9395275%2C2.15297147%2066.8775255%2C1.98810361%2066.855009%2C1.86885135%20C66.8318399%2C1.74992492%2066.855009%2C1.65836787%2066.9238638%2C1.59418018%20C66.9923924%2C1.53031832%2067.1163964%2C1.48926426%2067.2952232%2C1.4706922%20C67.4740501%2C1.45244595%2067.7145525%2C1.442997%2068.0173834%2C1.442997%20C68.2924765%2C1.442997%2068.5147047%2C1.45244595%2068.6847207%2C1.4706922%20C68.8544104%2C1.48926426%2068.9895095%2C1.51435285%2069.0906706%2C1.54628379%20C69.1915055%2C1.57854054%2069.2672132%2C1.62415616%2069.3174674%2C1.68378228%20C69.368048%2C1.7434084%2069.416018%2C1.819%2069.46203%2C1.91023123%20L71.9244885%2C7.02015766%20C72.1529169%2C7.50563814%2072.3813453%2C8.01392643%2072.6091212%2C8.54502253%20C72.8368969%2C9.07611859%2073.0695676%2C9.61177629%2073.3068068%2C10.1519955%20L73.3342182%2C10.1519955%20C73.5437198%2C9.63002255%2073.7600741%2C9.11065613%2073.9839339%2C8.5929189%20C74.2071411%2C8.07583333%2074.4332853%2C7.56526426%2074.6623664%2C7.06153753%20L77.1385308%2C1.92424174%20C77.1662681%2C1.83268469%2077.2051011%2C1.75481231%2077.255682%2C1.69062462%20C77.305936%2C1.62676277%2077.3744646%2C1.57854054%2077.46192%2C1.54628379%20C77.5490494%2C1.51435285%2077.6704426%2C1.48926426%2077.8264267%2C1.4706922%20C77.9824108%2C1.45244595%2078.1795116%2C1.442997%2078.4180559%2C1.442997%20C78.7482979%2C1.442997%2079.0074014%2C1.45472673%2079.1953657%2C1.47720871%20C79.3833291%2C1.50034235%2079.5138597%2C1.54367718%2079.5876096%2C1.60786487%20C79.6613595%2C1.67205255%2079.68616%2C1.76360961%2079.6633171%2C1.88253604%20C79.6404743%2C2.00178829%2079.5784723%2C2.16176877%2079.4776374%2C2.36312913%20L74.4424224%2C12.3910706%20L74.4424224%2C12.3910706%20L74.4424224%2C12.3910706%20Z%22%20id%3D%22Shape%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fg%3E%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fg%3E%20%20%20%20%20%20%20%20%3C%2Fg%3E%20%20%20%20%3C%2Fg%3E%3C%2Fsvg%3E",image:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOYAAADkAQMAAAC2bMrzAAAABlBMVEX///8AAABVwtN+AAACK0lEQVRYw9XYMY7mIAyG4TeioOQIPgo3I8nNOApHoKSw8m1B5t+Z7VfrRSkiPWkibLANf21lSXqyAKemWTVxuyVJV1QdQAOoFFGU1N3uBVhcPTVaHkny0pO6UzWOZVrRVWmSZqV0qG73f6GaVVKSKJ3wCjSM0h300R9xFU13hg4v/ffzZ/4G03dZmtWLNPHS3a6fB2IwzdKi5QHV2cHTsYc3ckIqtDyOZQCgWZ2KPXBq8M806/OdU730JEHD7sA69pu+zuc0q8axOPY9GFGxBxposg86L3IOacdGSM26NYA0a5o1qXuRdMfWcWicC0rfYeNFTmPnZUzFrjzIoojS9/WddC8adgXVrAt78tAE8NKdCg2Onb8RdZ+EEkVpsmvRNI5Fy7qiql15NEzqSX3/VNKD3YqrO0TMS6cIkHoap/TkvQsBNete9rwVnfYZ7jQssGIPHMso8tL19oNPHsTVrFujQZIAQOpuV5YWgXXZvcy3ld0PttAKx6LB3gJKp8g511eGRlW7spL6Lp69vBmKhVV7siSlWSlKklOxK+srQwNqHqfGoZHmuxEOaYfNV1f+DxQab2w4+x4Upk+XGlMBsnw3VrtPsevT8UXUPQ0AqFL30gHsfnMwqA6gQZpVu+aHpAu7vs8Yo+mp0QCql3e65Sbp+uRgUM3DYdf8aVbplt5dCKwCnOr77uaU7gVhFWhZSdLEQZLGuXvEqPpOET8T5jTx3Vt9mzHG0pDrFxd5veytOF4pAAAAAElFTkSuQmCC"},mono:{icon:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHAAAAAWCAMAAAAvk+g+AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAADPUExURQAAAPv7+/T09Lm5uf////z8/OLi4v7+/v39/QICAnt7e7S0tPDw8Pb29uvr63V1dRgYGKSkpNvb2+np6cDAwAgICOXl5VZWVsrKytXV1W5ubjMzM6enp/r6+sfHx+fn5/Ly8t/f38/Pz+7u7g4ODs3NzYWFhZmZmUFBQR4eHpGRkQUFBcTExLy8vJ2dndHR0To6Oq2trZKSktjY2BQUFKCgoICAgEhISI6OjrGwsSIiIltbW/79/i4uLiYmJk1NTaqqqpaWlmZmZmFhYYmJiVdCR2MAAAM3SURBVEjHvdbZkqJKEAbgH6EqM1EEUXBFcBC13fe1215m3v+ZzkWrrSfOuZmI7rygCCqivoDgryzQrXI5pu8vXG/U5KU5VkRkqJ8BwyfgXKao9doIfwQ0AUiF3wWw+QdAXgAQ0w8ANJ1vBjlr9AtjAFI7AEDV+IuF6psaWdZ/TvG4tCLrDoyPgF14Baq5NwDY/M0nNVH6X3CIinUP1gSQTrjfhyoToJpGyRfJD8PdKs+XZ8x8Adki67OILhciIouW/wIzAFIj9t/y4eH3sjzeHfuXbMymtaxnT6L21m4zcbqw3VaZKZ7mO+/uMiRSeuNu8zkmE5vx1p5ERMnkT2OfMTnTabnk/lkRLVHhaDGd8AVMXwDpqMUacs5ItbsAOp9gHoPAw8jtrmUdUriTblfmPvmYH59Efkf864h1gN8pmWiOPMi7Uo3RfC6jCicIBl4gzZSHqBglnNLbTzN+kr1TAgAMCtEJAFZXsOoXP9DQ8Ssy3sq2XN6jYfh4aRdqI6TODptUf2BDJk6r1AyCjqrNIuOABieQfOo3seIhJpVgEN/FothJ+gIAwCQXABg4V7DF9A6T2EaWdBESFb2g7MNlFT0hXcnAIZ5hp0yUFLOLCetp722MKiXwjGd2UaelbL3ziu9zqBsXDyfnQ3DM+AYS9WEy2ciKIgmR8yLah0usjkgzOTFRB0fDRImJ9pKPmyO3N5cqF+AZxDbqtBTIuq7uQL959YBJvCnp6376AEYD1Cyq45z4cInUGWkYPIXEeWmwib4i51XaFbEjnqHKCTyDyEadhti1Rrvi8w10ql8eXkL+ysADaB2k2XqbS4luIPeketh4ozab6A7zDcwLNTnpdIGqKsBTlmWjzkNMop7Yzg2s4756d5nLo0Xch8lso0bRxoN0351P0DiiyIUegPOByIT7Cmn+YqeHrtf4fENl0SdY4XSAt2ssqP0ABsUvMNUpU1EXiGKdEBvlLIuJyNExkdLaYVK6NkvZslKd5mZZgUgZflvndMiG1mRRrHNc1glzrLW6gnr9IK6+vT3xonvnyQ/0Qw7b7bqfTZsCoKd+oAEzET0zp/mPaut7jzZ4bAFEz0TWd4L/AJltcxCN1O75AAAAAElFTkSuQmCC",image:"/v6/b5deda1c1a121af1.svg"}},fs=Object.keys(ps);class gs extends pi{constructor(){super(),this.selected=""}connectedCallback(){super.connectedCallback(),1===fs.length&&(this.selected=fs[0])}Fe({target:t}){"IMG"===t.tagName?this.selected=t.getAttribute("data-name"):this.selected=""}render(){return Kn`
${fs.map((t=>Kn`${ao(`payment.${t}`)}`))}
${this.selected?function(t){const e=ps[t];if(!e)return console.warn(`Cannot find configuration for ${t} payment option`),null;let n;return e.image&&(n=Kn``),Kn`
${n}
`}(this.selected):""}`}}dn(gs,"cName","one-time-donations"),dn(gs,"properties",{selected:{type:String}}),gs.styles=hi`.options{margin:20px 0}.options img{margin:10px;cursor:pointer}.selected{text-align:center}`;class ms extends pi{constructor(){super(),this.items=null,this.type="page",this.categories=null}render(){const t=this.categories||Object.keys(this.items);return Kn``}}dn(ms,"cName","pages-by-categories"),dn(ms,"properties",{items:{type:Object},type:{type:String},categories:{type:Array}}),ms.styles=hi`:host{display:block}ul{list-style-type:none;margin:0;padding:0}nav>h3:first-child{margin-top:0}li{margin-top:8px}`;class Cs extends pi{constructor(){super(),this.type="info",this.message=""}render(){return Kn`${co(this.message)}`}}dn(Cs,"cName","app-notification"),dn(Cs,"properties",{type:{type:String},message:{type:String}}),Cs.styles=hi`:host{display:block;background:#1d1f21;border-radius:7px;padding:1rem;color:#fff;cursor:pointer}a{color:inherit}`;let vs=(t,e,n)=>(t.addEventListener(e,n,!1),()=>t.removeEventListener(e,n,!1));try{const t=Object.defineProperty({},"passive",{get:()=>(vs=(t,e,n)=>(t.addEventListener(e,n,{passive:!0}),()=>t.removeEventListener(e,n,{passive:!0})),!0)});window.addEventListener("test",null,t)}catch(vs){}var bs=(t,e,n)=>vs(t,e,n);const ws=window.requestAnimationFrame||window.webkitRequestAnimationFrame||(t=>setTimeout(t,1e3/60)),ys=window.document.documentElement,xs=(()=>{const t=["Webkit","Khtml","Moz","ms","O"];for(let e=0;ethis.t.removeEventListener(t,e,n)}open(){this.I("beforeopen"),Ss.classList.contains("slideout-open")||Ss.classList.add("slideout-open"),this.P(),this.S(this.g),this.l=!0;const t=this;return this.panel.addEventListener($s.end,(function e(){t.panel.removeEventListener($s.end,e),ks(t.panel,"transition",""),t.I("open")})),this}close(){if(!this.isOpen()&&!this.h)return this;this.I("beforeclose"),this.P(),this.S(0),this.l=!1;const t=this;return this.panel.addEventListener($s.end,(function e(){t.panel.removeEventListener($s.end,e),Ss.classList.remove("slideout-open"),ks(t.panel,"transition",""),ks(t.panel,"transform",""),t.I("close")})),this}toggle(){return this.isOpen()?this.close():this.open()}isOpen(){return this.l}S(t){this.i=t,ks(this.panel,"transform",`translateX(${t}px)`)}P(){ks(this.panel,"transition",`${xs}transform ${this.$}ms ${this.v}`)}k(){const t=()=>{Os=!1};let e;this.X=function(t,e,n){let i,r=!1;const o=()=>{n.call(t,i),r=!1};return bs(t,"scroll",(t=>{i=t,r||(ws(o),r=!0)}))}(js,0,(()=>{this.o||(clearTimeout(e),Os=!0,e=setTimeout(t,250))})),this.C=bs(this.panel,Es.start,(t=>{void 0!==t.touches&&(this.o=!1,this.h=!1,this.s=t.touches[0].pageX,this.u=!this.p||!this.isOpen()&&0!==this.menu.clientWidth)})),this.j=bs(this.panel,Es.cancel,(()=>{this.o=!1,this.h=!1})),this.D=bs(this.panel,Es.end,(()=>{if(this.o)if(this.I("translateend"),this.h&&Math.abs(this.i)>this.T)this.open();else if(this.g-Math.abs(this.i)<=this.T/2){this.P(),this.S(this.g);const t=this;this.panel.addEventListener($s.end,(function e(){this.panel.removeEventListener($s.end,e),ks(t.panel,"transition","")}))}else this.close();this.o=!1})),this.K=bs(this.panel,Es.move,(t=>{if(Os||this.u||void 0===t.touches||function(t){let e=t;for(;e.parentNode;){if(null!==e.getAttribute("data-slideout-ignore"))return e;e=e.parentNode}return null}(t.target))return;const e=t.touches[0].clientX-this.s;let n=e;if(this.i=e,Math.abs(n)>this.M||Math.abs(e)<=20)return;this.h=!0;const i=e*this.ge;this.l&&i>0||!this.l&&i<0||(this.o||this.I("translatestart"),i<=0&&(n=e+this.M*this.ge,this.h=!1),this.o&&Ss.classList.contains("slideout-open")||Ss.classList.add("slideout-open"),ks(this.panel,"transform",`translateX(${n}px)`),this.I("translate",n),this.o=!0)}))}enableTouch(){return this.p=!0,this}disableTouch(){return this.p=!1,this}destroy(){this.close(),this.C(),this.j(),this.D(),this.K(),this.X()}}class Ms extends pi{constructor(){super(),this.Ee=null,this.isOpen=!1,this.disabled=!1,this.$e=0}open(){this.isOpen=!0}close(){this.isOpen=!1}toggle(){this.isOpen=!this.isOpen}je(){const[t,e]=this.shadowRoot.children;this.Ee=new zs({menu:t,panel:e,eventsEmitter:this,padding:270,touch:!1});const n=()=>this.Ee.close();this.Ee.on("beforeopen",(()=>{this.isOpen=!0,this.$e=window.pageYOffset,t.classList.add("open"),e.style.top=-this.$e+"px",e.addEventListener("mousedown",n,!1),e.addEventListener("touchstart",n,!1),window.scroll(0,0)})),this.Ee.on("close",(()=>{this.isOpen=!1,t.classList.remove("open"),e.style.top="",window.scroll(0,this.$e),e.removeEventListener("mousedown",n,!1),e.removeEventListener("touchstart",n,!1)}))}updated(t){if(this.Ee||this.je(),this.isOpen!==this.Ee.isOpen()){const t=this.isOpen?"open":"close";this.Ee[t]()}if(t.has("disabled")){const t=this.disabled?"disableTouch":"enableTouch";this.Ee[t]()}}disconnectedCallback(){super.disconnectedCallback(),this.Ee.destroy(),this.Ee=null}render(){return Kn`
`}}async function Ds(){return(await cr("/versions.txt",{format:"txtArrayJSON",cache:!0})).body}function Ts(t){return window.location.href.replace("/v6/",`/${t}/`)}function Ls(t){window.location.href=Ts(t.target.value)}dn(Ms,"cName","menu-drawer"),dn(Ms,"properties",{isOpen:{type:Boolean},disabled:{type:Boolean}}),Ms.styles=hi`:host{display:block}.menu{display:none;padding:10px;width:256px;min-height:100vh;-webkit-overflow-scrolling:touch}.panel{position:relative;z-index:10;will-change:transform;min-height:100vh;background:#fff}.panel::before{position:absolute;left:0;top:0;bottom:0;width:100%;z-index:6000;background-color:transparent;transition:background-color .2s ease-in-out}.menu.open{display:block}.menu.open+.panel{position:fixed;left:0;right:0;top:0;overflow:hidden;min-height:100%;z-index:10;box-shadow:0 0 20px rgba(0,0,0,.5)}.menu.open+.panel::before{content:'';background-color:rgba(0,0,0,.5)}`;class _s extends pi{constructor(){super(),this.Se=[],this.Oe="v6",this.Oe&&this.Se.push({number:this.Oe})}async connectedCallback(){super.connectedCallback();const t=await Ds();this.Se=t.slice(0).reverse(),this.requestUpdate()}render(){return Kn``}}dn(_s,"cName","versions-select"),_s.styles=hi`:host{display:inline-block}select{display:block;font-size:16px;font-weight:700;color:#444;line-height:1.3;padding-left:.5em;padding-right:1.1em;box-sizing:border-box;margin:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;background-color:transparent;background-image:url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23444444%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E');background-repeat:no-repeat;background-position:right .5em top 50%;background-size:.5em auto;border:0;cursor:pointer}select::-ms-expand{display:none}select:focus{outline:0}`;class Ns extends pi{constructor(){super(),this.Se=[],this.Oe="v6"}async connectedCallback(){super.connectedCallback(),this.ie=io.observe((()=>this.requestUpdate())),this.Se=await Ds(),this.requestUpdate()}disconnectedCallback(){super.disconnectedCallback(),this.ie&&this.ie()}render(){const t=this.Se[this.Se.length-1];return t&&t.number!==this.Oe?Kn`
${co("oldVersionAlert",{latestVersion:t.number,currentVersion:this.Oe,latestVersionUrl:Ts(t.number)})}
`:Kn``}}dn(Ns,"cName","old-version-alert"),Ns.styles=[po,Co,hi`a{color:inherit}`];const Bs=[uo,ho,bo,wo,yo,xo,ko,Oo,Lo,zo,hs,ds,as,ms,gs,Cs,Ms,_s,Ns];const{navigator:Is,location:qs}=window,Ps="localhost"===qs.hostname||"[::1]"===qs.hostname||qs.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),Us="serviceWorker"in Is,Vs=(...t)=>console.log(...t);function Rs(t,e){let n=!1;return Is.serviceWorker.addEventListener("controllerchange",(()=>{n||(n=!0,qs.reload())})),Is.serviceWorker.register(t).then((t=>{Vs("service worker is registered"),t.onupdatefound=()=>function(t,e){t&&(t.onstatechange=()=>{Vs("new worker state",t.state),"installed"===t.state&&(Is.serviceWorker.controller?(Vs("New content is available and will be used when all tabs for this page are closed. See https://bit.ly/CRA-PWA."),e&&e.onUpdate&&e.onUpdate(t)):(Vs("Content is cached for offline use."),e&&e.onSuccess&&e.onSuccess(t)))})}(t.installing,e)})).catch((t=>{console.error("Error during service worker registration:",t)}))}window.__isAppExecuted__=!0;const Gs=function(t){const e=document.querySelector(t);return Bs.forEach((t=>customElements.define(t.cName,t))),io.observe((async t=>{const n=t.response.params.lang||mr;Cr()!==n&&(await br(n),e.ready=!0),$o(t)})),e}("casl-docs");!function(t){Us&&window.addEventListener("load",(()=>{const e="/v6/sw.js";Ps?function(t,e){cr(t,{headers:{"Service-Worker":"script"},format:"raw",absoluteUrl:!0}).then((n=>{const i=n.headers["content-type"]||"";404===n.status||-1===i.indexOf("javascript")?(Vs("cannot detect service worker"),Is.serviceWorker.ready.then((t=>t.unregister())).then((()=>qs.reload()))):Rs(t,e)})).catch((()=>{Vs("No internet connection found. App is running in offline mode.")}))}(e,t):Rs(e,t)}))}({onUpdate(t){Gs.notify("updateAvailable",{onClick(){t.postMessage({type:"SKIP_WAITING"})}})}}); +//# sourceMappingURL=bootstrap.6cc06c45.js.map diff --git a/v6/bootstrap.8396b992.js.map b/v6/bootstrap.6cc06c45.js.map similarity index 99% rename from v6/bootstrap.8396b992.js.map rename to v6/bootstrap.6cc06c45.js.map index 141b62977..94ae012ae 100644 --- a/v6/bootstrap.8396b992.js.map +++ b/v6/bootstrap.6cc06c45.js.map @@ -1 +1 @@ -{"version":3,"file":"bootstrap.8396b992.js","sources":["../node_modules/core-js/internals/global.js","../node_modules/core-js/internals/fails.js","../node_modules/core-js/internals/descriptors.js","../node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/core-js/internals/create-property-descriptor.js","../node_modules/core-js/internals/classof-raw.js","../node_modules/core-js/internals/indexed-object.js","../node_modules/core-js/internals/require-object-coercible.js","../node_modules/core-js/internals/to-indexed-object.js","../node_modules/core-js/internals/is-object.js","../node_modules/core-js/internals/to-primitive.js","../node_modules/core-js/internals/to-object.js","../node_modules/core-js/internals/has.js","../node_modules/core-js/internals/document-create-element.js","../node_modules/core-js/internals/ie8-dom-define.js","../node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/core-js/internals/an-object.js","../node_modules/core-js/internals/object-define-property.js","../node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/core-js/internals/set-global.js","../node_modules/core-js/internals/shared-store.js","../node_modules/core-js/internals/inspect-source.js","../node_modules/core-js/internals/native-weak-map.js","../node_modules/core-js/internals/shared.js","../node_modules/core-js/internals/uid.js","../node_modules/core-js/internals/internal-state.js","../node_modules/core-js/internals/shared-key.js","../node_modules/core-js/internals/hidden-keys.js","../node_modules/core-js/internals/redefine.js","../node_modules/core-js/internals/path.js","../node_modules/core-js/internals/get-built-in.js","../node_modules/core-js/internals/to-integer.js","../node_modules/core-js/internals/to-length.js","../node_modules/core-js/internals/to-absolute-index.js","../node_modules/core-js/internals/array-includes.js","../node_modules/core-js/internals/object-keys-internal.js","../node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/core-js/internals/enum-bug-keys.js","../node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/core-js/internals/own-keys.js","../node_modules/core-js/internals/task.js","../node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/core-js/internals/is-forced.js","../node_modules/core-js/internals/export.js","../node_modules/core-js/internals/function-bind-context.js","../node_modules/core-js/internals/a-function.js","../node_modules/core-js/internals/html.js","../node_modules/core-js/internals/engine-user-agent.js","../node_modules/core-js/internals/engine-is-ios.js","../node_modules/core-js/internals/engine-is-node.js","../node_modules/core-js/modules/web.immediate.js","../node_modules/lit-html/lib/dom.js","../node_modules/lit-html/lib/template.js","../node_modules/lit-html/lib/modify-template.js","../node_modules/lit-html/lib/directive.js","../node_modules/lit-html/lib/part.js","../node_modules/lit-html/lib/template-instance.js","../node_modules/lit-html/lib/template-result.js","../node_modules/lit-html/lib/parts.js","../node_modules/lit-html/lib/template-factory.js","../node_modules/lit-html/lib/render.js","../node_modules/lit-html/lib/default-template-processor.js","../node_modules/lit-html/lit-html.js","../node_modules/lit-html/lib/shady-render.js","../node_modules/lit-element/lib/updating-element.js","../node_modules/lit-element/lib/css-tag.js","../node_modules/lit-element/lit-element.js","../node_modules/lit-html/directives/cache.js","../node_modules/path-to-regexp/index.js","../node_modules/@curi/router/dist/curi-router.es.js","../node_modules/@hickory/location-utils/dist/hickory-location-utils.es.js","../node_modules/@hickory/root/dist/hickory-root.es.js","../node_modules/@hickory/dom-utils/dist/hickory-dom-utils.es.js","../node_modules/@hickory/browser/dist/hickory-browser.es.js","../src/config/app.js","../node_modules/lit-translate/helpers.js","../node_modules/lit-translate/util.js","../node_modules/lit-translate/config.js","../node_modules/lit-translate/cleanup.js","../node_modules/lit-translate/directive.js","../node_modules/lit-html/directives/unsafe-html.js","../src/services/utils.js","../src/services/http.js","../CONTENT_1:/home/runner/work/casl/casl/docs-src/src/content/app","../src/services/i18n.js","../node_modules/minisearch/dist/es/index.js","../src/config/search.js","../CONTENT_2:/home/runner/work/casl/casl/docs-src/src/content/pages","../src/services/content.js","../src/services/ContentType.js","../src/services/error.js","../src/services/pageController.js","../src/services/querystring.js","../src/services/router.js","../node_modules/@curi/interactions/dist/curi-interactions.es.js","../src/hooks/watchMedia.js","../src/directives/i18n.js","../node_modules/lit-translate/directives/translate.js","../src/components/App.js","../src/styles/grid.js","../src/components/AppRoot.js","../src/styles/md.js","../src/styles/page.js","../src/styles/btn.js","../src/styles/code.js","../src/styles/alert.js","../src/components/AppFooter.js","../src/components/AppHeader.js","../src/assets/icons/menu.png","../src/components/AppLink.js","../src/components/AppMenu.js","../src/components/ArticleDetails.js","../src/components/I18nElement.js","../src/services/meta.js","../src/hooks/scrollToSection.js","../src/components/Page.js","../src/components/PageNav.js","../src/partials/caslFeatures.js","../src/components/HomePage.js","../src/assets/casl-shield.png","../node_modules/github-buttons/dist/buttons.esm.js","../src/components/GithubButton.js","../src/components/QuickSearch.js","../src/components/LangPicker.js","../src/components/OneTimeDonations.js","../src/assets/payment-options/liqpay.svg","../src/assets/payment-options/liqpay-qrcode.png","../src/assets/payment-options/monobank.png","../src/assets/payment-options/monobank-qrcode.svg","../src/components/PagesByCategories.js","../src/components/AppNotification.js","../node_modules/menu-drawer.js/dist/es/index.js","../src/components/MenuDrawer.js","../src/services/version.js","../src/components/VersionsSelect.js","../src/components/OldVersionAlert.js","../src/app.js","../src/serviceWorker.js","../src/bootstrap.js"],"sourcesContent":["var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function hasOwn(it, key) {\n return hasOwnProperty.call(toObject(it), key);\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.11.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins -- safe\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func -- spec requirement\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar task = require('../internals/task');\n\nvar FORCED = !global.setImmediate || !global.clearImmediate;\n\n// http://w3c.github.io/setImmediate/\n$({ global: true, bind: true, enumerable: true, forced: FORCED }, {\n // `setImmediate` method\n // http://w3c.github.io/setImmediate/#si-setImmediate\n setImmediate: task.set,\n // `clearImmediate` method\n // http://w3c.github.io/setImmediate/#si-clearImmediate\n clearImmediate: task.clear\n});\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * True if the custom elements polyfill is in use.\n */\nexport const isCEPolyfill = typeof window !== 'undefined' &&\n window.customElements != null &&\n window.customElements.polyfillWrapFlushCallback !==\n undefined;\n/**\n * Reparents nodes, starting from `start` (inclusive) to `end` (exclusive),\n * into another container (could be the same container), before `before`. If\n * `before` is null, it appends the nodes to the container.\n */\nexport const reparentNodes = (container, start, end = null, before = null) => {\n while (start !== end) {\n const n = start.nextSibling;\n container.insertBefore(start, before);\n start = n;\n }\n};\n/**\n * Removes nodes, starting from `start` (inclusive) to `end` (exclusive), from\n * `container`.\n */\nexport const removeNodes = (container, start, end = null) => {\n while (start !== end) {\n const n = start.nextSibling;\n container.removeChild(start);\n start = n;\n }\n};\n//# sourceMappingURL=dom.js.map","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * An expression marker with embedded unique key to avoid collision with\n * possible text in templates.\n */\nexport const marker = `{{lit-${String(Math.random()).slice(2)}}}`;\n/**\n * An expression marker used text-positions, multi-binding attributes, and\n * attributes with markup-like text values.\n */\nexport const nodeMarker = ``;\nexport const markerRegex = new RegExp(`${marker}|${nodeMarker}`);\n/**\n * Suffix appended to all bound attribute names.\n */\nexport const boundAttributeSuffix = '$lit$';\n/**\n * An updatable Template that tracks the location of dynamic parts.\n */\nexport class Template {\n constructor(result, element) {\n this.parts = [];\n this.element = element;\n const nodesToRemove = [];\n const stack = [];\n // Edge needs all 4 parameters present; IE11 needs 3rd parameter to be null\n const walker = document.createTreeWalker(element.content, 133 /* NodeFilter.SHOW_{ELEMENT|COMMENT|TEXT} */, null, false);\n // Keeps track of the last index associated with a part. We try to delete\n // unnecessary nodes, but we never want to associate two different parts\n // to the same index. They must have a constant node between.\n let lastPartIndex = 0;\n let index = -1;\n let partIndex = 0;\n const { strings, values: { length } } = result;\n while (partIndex < length) {\n const node = walker.nextNode();\n if (node === null) {\n // We've exhausted the content inside a nested template element.\n // Because we still have parts (the outer for-loop), we know:\n // - There is a template in the stack\n // - The walker will find a nextNode outside the template\n walker.currentNode = stack.pop();\n continue;\n }\n index++;\n if (node.nodeType === 1 /* Node.ELEMENT_NODE */) {\n if (node.hasAttributes()) {\n const attributes = node.attributes;\n const { length } = attributes;\n // Per\n // https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap,\n // attributes are not guaranteed to be returned in document order.\n // In particular, Edge/IE can return them out of order, so we cannot\n // assume a correspondence between part index and attribute index.\n let count = 0;\n for (let i = 0; i < length; i++) {\n if (endsWith(attributes[i].name, boundAttributeSuffix)) {\n count++;\n }\n }\n while (count-- > 0) {\n // Get the template literal section leading up to the first\n // expression in this attribute\n const stringForPart = strings[partIndex];\n // Find the attribute name\n const name = lastAttributeNameRegex.exec(stringForPart)[2];\n // Find the corresponding attribute\n // All bound attributes have had a suffix added in\n // TemplateResult#getHTML to opt out of special attribute\n // handling. To look up the attribute value we also need to add\n // the suffix.\n const attributeLookupName = name.toLowerCase() + boundAttributeSuffix;\n const attributeValue = node.getAttribute(attributeLookupName);\n node.removeAttribute(attributeLookupName);\n const statics = attributeValue.split(markerRegex);\n this.parts.push({ type: 'attribute', index, name, strings: statics });\n partIndex += statics.length - 1;\n }\n }\n if (node.tagName === 'TEMPLATE') {\n stack.push(node);\n walker.currentNode = node.content;\n }\n }\n else if (node.nodeType === 3 /* Node.TEXT_NODE */) {\n const data = node.data;\n if (data.indexOf(marker) >= 0) {\n const parent = node.parentNode;\n const strings = data.split(markerRegex);\n const lastIndex = strings.length - 1;\n // Generate a new text node for each literal section\n // These nodes are also used as the markers for node parts\n for (let i = 0; i < lastIndex; i++) {\n let insert;\n let s = strings[i];\n if (s === '') {\n insert = createMarker();\n }\n else {\n const match = lastAttributeNameRegex.exec(s);\n if (match !== null && endsWith(match[2], boundAttributeSuffix)) {\n s = s.slice(0, match.index) + match[1] +\n match[2].slice(0, -boundAttributeSuffix.length) + match[3];\n }\n insert = document.createTextNode(s);\n }\n parent.insertBefore(insert, node);\n this.parts.push({ type: 'node', index: ++index });\n }\n // If there's no text, we must insert a comment to mark our place.\n // Else, we can trust it will stick around after cloning.\n if (strings[lastIndex] === '') {\n parent.insertBefore(createMarker(), node);\n nodesToRemove.push(node);\n }\n else {\n node.data = strings[lastIndex];\n }\n // We have a part for each match found\n partIndex += lastIndex;\n }\n }\n else if (node.nodeType === 8 /* Node.COMMENT_NODE */) {\n if (node.data === marker) {\n const parent = node.parentNode;\n // Add a new marker node to be the startNode of the Part if any of\n // the following are true:\n // * We don't have a previousSibling\n // * The previousSibling is already the start of a previous part\n if (node.previousSibling === null || index === lastPartIndex) {\n index++;\n parent.insertBefore(createMarker(), node);\n }\n lastPartIndex = index;\n this.parts.push({ type: 'node', index });\n // If we don't have a nextSibling, keep this node so we have an end.\n // Else, we can remove it to save future costs.\n if (node.nextSibling === null) {\n node.data = '';\n }\n else {\n nodesToRemove.push(node);\n index--;\n }\n partIndex++;\n }\n else {\n let i = -1;\n while ((i = node.data.indexOf(marker, i + 1)) !== -1) {\n // Comment node has a binding marker inside, make an inactive part\n // The binding won't work, but subsequent bindings will\n // TODO (justinfagnani): consider whether it's even worth it to\n // make bindings in comments work\n this.parts.push({ type: 'node', index: -1 });\n partIndex++;\n }\n }\n }\n }\n // Remove text binding nodes after the walk to not disturb the TreeWalker\n for (const n of nodesToRemove) {\n n.parentNode.removeChild(n);\n }\n }\n}\nconst endsWith = (str, suffix) => {\n const index = str.length - suffix.length;\n return index >= 0 && str.slice(index) === suffix;\n};\nexport const isTemplatePartActive = (part) => part.index !== -1;\n// Allows `document.createComment('')` to be renamed for a\n// small manual size-savings.\nexport const createMarker = () => document.createComment('');\n/**\n * This regex extracts the attribute name preceding an attribute-position\n * expression. It does this by matching the syntax allowed for attributes\n * against the string literal directly preceding the expression, assuming that\n * the expression is in an attribute-value position.\n *\n * See attributes in the HTML spec:\n * https://www.w3.org/TR/html5/syntax.html#elements-attributes\n *\n * \" \\x09\\x0a\\x0c\\x0d\" are HTML space characters:\n * https://www.w3.org/TR/html5/infrastructure.html#space-characters\n *\n * \"\\0-\\x1F\\x7F-\\x9F\" are Unicode control characters, which includes every\n * space character except \" \".\n *\n * So an attribute is:\n * * The name: any character except a control character, space character, ('),\n * (\"), \">\", \"=\", or \"/\"\n * * Followed by zero or more space characters\n * * Followed by \"=\"\n * * Followed by zero or more space characters\n * * Followed by:\n * * Any character except space, ('), (\"), \"<\", \">\", \"=\", (`), or\n * * (\") then any non-(\"), or\n * * (') then any non-(')\n */\nexport const lastAttributeNameRegex = \n// eslint-disable-next-line no-control-regex\n/([ \\x09\\x0a\\x0c\\x0d])([^\\0-\\x1F\\x7F-\\x9F \"'>=/]+)([ \\x09\\x0a\\x0c\\x0d]*=[ \\x09\\x0a\\x0c\\x0d]*(?:[^ \\x09\\x0a\\x0c\\x0d\"'`<>=]*|\"[^\"]*|'[^']*))$/;\n//# sourceMappingURL=template.js.map","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nimport { isTemplatePartActive } from './template.js';\nconst walkerNodeFilter = 133 /* NodeFilter.SHOW_{ELEMENT|COMMENT|TEXT} */;\n/**\n * Removes the list of nodes from a Template safely. In addition to removing\n * nodes from the Template, the Template part indices are updated to match\n * the mutated Template DOM.\n *\n * As the template is walked the removal state is tracked and\n * part indices are adjusted as needed.\n *\n * div\n * div#1 (remove) <-- start removing (removing node is div#1)\n * div\n * div#2 (remove) <-- continue removing (removing node is still div#1)\n * div\n * div <-- stop removing since previous sibling is the removing node (div#1,\n * removed 4 nodes)\n */\nexport function removeNodesFromTemplate(template, nodesToRemove) {\n const { element: { content }, parts } = template;\n const walker = document.createTreeWalker(content, walkerNodeFilter, null, false);\n let partIndex = nextActiveIndexInTemplateParts(parts);\n let part = parts[partIndex];\n let nodeIndex = -1;\n let removeCount = 0;\n const nodesToRemoveInTemplate = [];\n let currentRemovingNode = null;\n while (walker.nextNode()) {\n nodeIndex++;\n const node = walker.currentNode;\n // End removal if stepped past the removing node\n if (node.previousSibling === currentRemovingNode) {\n currentRemovingNode = null;\n }\n // A node to remove was found in the template\n if (nodesToRemove.has(node)) {\n nodesToRemoveInTemplate.push(node);\n // Track node we're removing\n if (currentRemovingNode === null) {\n currentRemovingNode = node;\n }\n }\n // When removing, increment count by which to adjust subsequent part indices\n if (currentRemovingNode !== null) {\n removeCount++;\n }\n while (part !== undefined && part.index === nodeIndex) {\n // If part is in a removed node deactivate it by setting index to -1 or\n // adjust the index as needed.\n part.index = currentRemovingNode !== null ? -1 : part.index - removeCount;\n // go to the next active part.\n partIndex = nextActiveIndexInTemplateParts(parts, partIndex);\n part = parts[partIndex];\n }\n }\n nodesToRemoveInTemplate.forEach((n) => n.parentNode.removeChild(n));\n}\nconst countNodes = (node) => {\n let count = (node.nodeType === 11 /* Node.DOCUMENT_FRAGMENT_NODE */) ? 0 : 1;\n const walker = document.createTreeWalker(node, walkerNodeFilter, null, false);\n while (walker.nextNode()) {\n count++;\n }\n return count;\n};\nconst nextActiveIndexInTemplateParts = (parts, startIndex = -1) => {\n for (let i = startIndex + 1; i < parts.length; i++) {\n const part = parts[i];\n if (isTemplatePartActive(part)) {\n return i;\n }\n }\n return -1;\n};\n/**\n * Inserts the given node into the Template, optionally before the given\n * refNode. In addition to inserting the node into the Template, the Template\n * part indices are updated to match the mutated Template DOM.\n */\nexport function insertNodeIntoTemplate(template, node, refNode = null) {\n const { element: { content }, parts } = template;\n // If there's no refNode, then put node at end of template.\n // No part indices need to be shifted in this case.\n if (refNode === null || refNode === undefined) {\n content.appendChild(node);\n return;\n }\n const walker = document.createTreeWalker(content, walkerNodeFilter, null, false);\n let partIndex = nextActiveIndexInTemplateParts(parts);\n let insertCount = 0;\n let walkerIndex = -1;\n while (walker.nextNode()) {\n walkerIndex++;\n const walkerNode = walker.currentNode;\n if (walkerNode === refNode) {\n insertCount = countNodes(node);\n refNode.parentNode.insertBefore(node, refNode);\n }\n while (partIndex !== -1 && parts[partIndex].index === walkerIndex) {\n // If we've inserted the node, simply adjust all subsequent parts\n if (insertCount > 0) {\n while (partIndex !== -1) {\n parts[partIndex].index += insertCount;\n partIndex = nextActiveIndexInTemplateParts(parts, partIndex);\n }\n return;\n }\n partIndex = nextActiveIndexInTemplateParts(parts, partIndex);\n }\n }\n}\n//# sourceMappingURL=modify-template.js.map","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nconst directives = new WeakMap();\n/**\n * Brands a function as a directive factory function so that lit-html will call\n * the function during template rendering, rather than passing as a value.\n *\n * A _directive_ is a function that takes a Part as an argument. It has the\n * signature: `(part: Part) => void`.\n *\n * A directive _factory_ is a function that takes arguments for data and\n * configuration and returns a directive. Users of directive usually refer to\n * the directive factory as the directive. For example, \"The repeat directive\".\n *\n * Usually a template author will invoke a directive factory in their template\n * with relevant arguments, which will then return a directive function.\n *\n * Here's an example of using the `repeat()` directive factory that takes an\n * array and a function to render an item:\n *\n * ```js\n * html`
    <${repeat(items, (item) => html`
  • ${item}
  • `)}
`\n * ```\n *\n * When `repeat` is invoked, it returns a directive function that closes over\n * `items` and the template function. When the outer template is rendered, the\n * return directive function is called with the Part for the expression.\n * `repeat` then performs it's custom logic to render multiple items.\n *\n * @param f The directive factory function. Must be a function that returns a\n * function of the signature `(part: Part) => void`. The returned function will\n * be called with the part object.\n *\n * @example\n *\n * import {directive, html} from 'lit-html';\n *\n * const immutable = directive((v) => (part) => {\n * if (part.value !== v) {\n * part.setValue(v)\n * }\n * });\n */\nexport const directive = (f) => ((...args) => {\n const d = f(...args);\n directives.set(d, true);\n return d;\n});\nexport const isDirective = (o) => {\n return typeof o === 'function' && directives.has(o);\n};\n//# sourceMappingURL=directive.js.map","/**\n * @license\n * Copyright (c) 2018 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * A sentinel value that signals that a value was handled by a directive and\n * should not be written to the DOM.\n */\nexport const noChange = {};\n/**\n * A sentinel value that signals a NodePart to fully clear its content.\n */\nexport const nothing = {};\n//# sourceMappingURL=part.js.map","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nimport { isCEPolyfill } from './dom.js';\nimport { isTemplatePartActive } from './template.js';\n/**\n * An instance of a `Template` that can be attached to the DOM and updated\n * with new values.\n */\nexport class TemplateInstance {\n constructor(template, processor, options) {\n this.__parts = [];\n this.template = template;\n this.processor = processor;\n this.options = options;\n }\n update(values) {\n let i = 0;\n for (const part of this.__parts) {\n if (part !== undefined) {\n part.setValue(values[i]);\n }\n i++;\n }\n for (const part of this.__parts) {\n if (part !== undefined) {\n part.commit();\n }\n }\n }\n _clone() {\n // There are a number of steps in the lifecycle of a template instance's\n // DOM fragment:\n // 1. Clone - create the instance fragment\n // 2. Adopt - adopt into the main document\n // 3. Process - find part markers and create parts\n // 4. Upgrade - upgrade custom elements\n // 5. Update - set node, attribute, property, etc., values\n // 6. Connect - connect to the document. Optional and outside of this\n // method.\n //\n // We have a few constraints on the ordering of these steps:\n // * We need to upgrade before updating, so that property values will pass\n // through any property setters.\n // * We would like to process before upgrading so that we're sure that the\n // cloned fragment is inert and not disturbed by self-modifying DOM.\n // * We want custom elements to upgrade even in disconnected fragments.\n //\n // Given these constraints, with full custom elements support we would\n // prefer the order: Clone, Process, Adopt, Upgrade, Update, Connect\n //\n // But Safari does not implement CustomElementRegistry#upgrade, so we\n // can not implement that order and still have upgrade-before-update and\n // upgrade disconnected fragments. So we instead sacrifice the\n // process-before-upgrade constraint, since in Custom Elements v1 elements\n // must not modify their light DOM in the constructor. We still have issues\n // when co-existing with CEv0 elements like Polymer 1, and with polyfills\n // that don't strictly adhere to the no-modification rule because shadow\n // DOM, which may be created in the constructor, is emulated by being placed\n // in the light DOM.\n //\n // The resulting order is on native is: Clone, Adopt, Upgrade, Process,\n // Update, Connect. document.importNode() performs Clone, Adopt, and Upgrade\n // in one step.\n //\n // The Custom Elements v1 polyfill supports upgrade(), so the order when\n // polyfilled is the more ideal: Clone, Process, Adopt, Upgrade, Update,\n // Connect.\n const fragment = isCEPolyfill ?\n this.template.element.content.cloneNode(true) :\n document.importNode(this.template.element.content, true);\n const stack = [];\n const parts = this.template.parts;\n // Edge needs all 4 parameters present; IE11 needs 3rd parameter to be null\n const walker = document.createTreeWalker(fragment, 133 /* NodeFilter.SHOW_{ELEMENT|COMMENT|TEXT} */, null, false);\n let partIndex = 0;\n let nodeIndex = 0;\n let part;\n let node = walker.nextNode();\n // Loop through all the nodes and parts of a template\n while (partIndex < parts.length) {\n part = parts[partIndex];\n if (!isTemplatePartActive(part)) {\n this.__parts.push(undefined);\n partIndex++;\n continue;\n }\n // Progress the tree walker until we find our next part's node.\n // Note that multiple parts may share the same node (attribute parts\n // on a single element), so this loop may not run at all.\n while (nodeIndex < part.index) {\n nodeIndex++;\n if (node.nodeName === 'TEMPLATE') {\n stack.push(node);\n walker.currentNode = node.content;\n }\n if ((node = walker.nextNode()) === null) {\n // We've exhausted the content inside a nested template element.\n // Because we still have parts (the outer for-loop), we know:\n // - There is a template in the stack\n // - The walker will find a nextNode outside the template\n walker.currentNode = stack.pop();\n node = walker.nextNode();\n }\n }\n // We've arrived at our part's node.\n if (part.type === 'node') {\n const part = this.processor.handleTextExpression(this.options);\n part.insertAfterNode(node.previousSibling);\n this.__parts.push(part);\n }\n else {\n this.__parts.push(...this.processor.handleAttributeExpressions(node, part.name, part.strings, this.options));\n }\n partIndex++;\n }\n if (isCEPolyfill) {\n document.adoptNode(fragment);\n customElements.upgrade(fragment);\n }\n return fragment;\n }\n}\n//# sourceMappingURL=template-instance.js.map","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n/**\n * @module lit-html\n */\nimport { reparentNodes } from './dom.js';\nimport { boundAttributeSuffix, lastAttributeNameRegex, marker, nodeMarker } from './template.js';\n/**\n * Our TrustedTypePolicy for HTML which is declared using the html template\n * tag function.\n *\n * That HTML is a developer-authored constant, and is parsed with innerHTML\n * before any untrusted expressions have been mixed in. Therefor it is\n * considered safe by construction.\n */\nconst policy = window.trustedTypes &&\n trustedTypes.createPolicy('lit-html', { createHTML: (s) => s });\nconst commentMarker = ` ${marker} `;\n/**\n * The return type of `html`, which holds a Template and the values from\n * interpolated expressions.\n */\nexport class TemplateResult {\n constructor(strings, values, type, processor) {\n this.strings = strings;\n this.values = values;\n this.type = type;\n this.processor = processor;\n }\n /**\n * Returns a string of HTML used to create a `