+
+
diff --git a/specification/specification.yaml b/specification/specification.yaml
new file mode 100644
index 0000000..733bdeb
--- /dev/null
+++ b/specification/specification.yaml
@@ -0,0 +1,2949 @@
+openapi: 3.0.0
+info:
+ title: Beckn-ONIX Specification
+ description: Transaction Layer APIs for Beckn-ONIX Specification.
+ version: "0.1"
+servers:
+ - url: https://ps-bap-client.becknprotocol.io
+ description: BOC Network
+
+paths:
+
+ /search:
+ post:
+ tags:
+ - Beckn Provider Platform(BPP)
+ - Beckn Gateway (BG)
+ description: Consumer Interface declares the customer's intent to buy/avail products or services
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - search
+ message:
+ type: object
+ properties:
+ intent:
+ $ref: "#/components/schemas/Intent"
+ required:
+ - context
+ - message
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /select:
+ post:
+ tags:
+ - Beckn Provider Platform(BPP)
+ description: Consumer Interface declares the customer's cart (or equivalent) created by selecting objects from the catalog
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - select
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ order:
+ $ref: "#/components/schemas/Order"
+ required:
+ - order
+ required:
+ - context
+ - message
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /init:
+ post:
+ tags:
+ - Beckn Provider Platform(BPP)
+ description: Initialize an order by providing billing and/or shipping details
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - init
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ order:
+ $ref: "#/components/schemas/Order"
+ required:
+ - order
+ required:
+ - context
+ - message
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /confirm:
+ post:
+ tags:
+ - Beckn Provider Platform(BPP)
+ description: Initialize an order by providing billing and/or shipping details
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - confirm
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ order:
+ $ref: "#/components/schemas/Order"
+ required:
+ - order
+ required:
+ - context
+ - message
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /status:
+ post:
+ tags:
+ - Beckn Provider Platform(BPP)
+ description: Fetch the latest order object
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - status
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ order_id:
+ $ref: "#/components/schemas/Order/properties/id"
+ required:
+ - order_id
+ required:
+ - context
+ - message
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /track:
+ post:
+ tags:
+ - Beckn Provider Platform(BPP)
+ description: Track an active order
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - track
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ order_id:
+ $ref: "#/components/schemas/Order/properties/id"
+ callback_url:
+ type: string
+ format: uri
+ required:
+ - order_id
+ required:
+ - context
+ - message
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /cancel:
+ post:
+ tags:
+ - Beckn Provider Platform(BPP)
+ description: Cancel an order
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - cancel
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ order_id:
+ $ref: "#/components/schemas/Order/properties/id"
+ cancellation_reason_id:
+ $ref: "#/components/schemas/Option/properties/id"
+ descriptor:
+ $ref: "#/components/schemas/Descriptor"
+ required:
+ - order_id
+ required:
+ - context
+ - message
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /update:
+ post:
+ tags:
+ - Beckn Provider Platform(BPP)
+ description: Remove object
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - update
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ update_target:
+ description: 'Comma separated values of order objects being updated. For example: ```"update_target":"item,billing,fulfillment"```'
+ type: string
+ order:
+ description: Updated order object
+ allOf:
+ - $ref: "#/components/schemas/Order"
+ required:
+ - update_target
+ - order
+ required:
+ - context
+ - message
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /rating:
+ post:
+ tags:
+ - Beckn Provider Platform(BPP)
+ description: Provide feedback on a service
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - rating
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ ratings:
+ type: array
+ items:
+ $ref: "#/components/schemas/Rating"
+ required:
+ - context
+ - message
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /support:
+ post:
+ tags:
+ - Beckn Provider Platform(BPP)
+ description: Fetch support information
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - support
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ support:
+ $ref: "#/components/schemas/Support"
+ required:
+ - context
+ - message
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /get_cancellation_reasons:
+ post:
+ tags:
+ - Beckn Provider Platform(BPP)
+ description: BAP fetches the list of cancellation reasons from BPP
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: '#/components/schemas/Context'
+ - properties:
+ action:
+ enum:
+ - get_cancellation_reasons
+ required:
+ - action
+ required:
+ - context
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /get_return_reasons:
+ post:
+ tags:
+ - Beckn Provider Platform(BPP)
+ description: BAP requests BPP to provide the list of return reasons
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: '#/components/schemas/Context'
+ - properties:
+ action:
+ enum:
+ - get_return_reasons
+ required:
+ - action
+ required:
+ - context
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /get_rating_categories:
+ post:
+ tags:
+ - Beckn Provider Platform(BPP)
+ description: BAP requests BPP to provide the list of entities that can be rated on its system
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: '#/components/schemas/Context'
+ - properties:
+ action:
+ enum:
+ - get_rating_categories
+ required:
+ - action
+ required:
+ - context
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+
+ /on_search:
+ post:
+ tags:
+ - Beckn Application Platform(BAP)
+ description: Provider Platform sends its catalog in response to a search request.
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - on_search
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ catalog:
+ $ref: "#/components/schemas/Catalog"
+ required:
+ - catalog
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - context
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /on_select:
+ post:
+ tags:
+ - Beckn Application Platform(BAP)
+ description: Send draft order object with quoted price for selected items
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - on_select
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ order:
+ $ref: "#/components/schemas/Order"
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - context
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /on_init:
+ post:
+ tags:
+ - Beckn Application Platform(BAP)
+ description: Send order object with payment details updated
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - on_init
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ order:
+ $ref: "#/components/schemas/Order"
+ required:
+ - order
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - context
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /on_confirm:
+ post:
+ tags:
+ - Beckn Application Platform(BAP)
+ description: Send active order object
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - on_confirm
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ order:
+ $ref: "#/components/schemas/Order"
+ required:
+ - order
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - context
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /on_track:
+ post:
+ tags:
+ - Beckn Application Platform(BAP)
+ description: Send tracking details of an active order
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - on_track
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ tracking:
+ $ref: "#/components/schemas/Tracking"
+ required:
+ - tracking
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - context
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /on_cancel:
+ post:
+ tags:
+ - Beckn Application Platform(BAP)
+ description: Send cancellation request_id with reasons list in case of cancellation request. Else send cancelled order object
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - on_cancel
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ order:
+ $ref: "#/components/schemas/Order"
+ required:
+ - order
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - context
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /on_update:
+ post:
+ tags:
+ - Beckn Application Platform(BAP)
+ description: Returns updated service with updated runtime object
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - on_update
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ order:
+ $ref: "#/components/schemas/Order"
+ required:
+ - order
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - context
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /on_status:
+ post:
+ tags:
+ - Beckn Application Platform(BAP)
+ description: Fetch the status of a Service
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - on_status
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ order:
+ $ref: "#/components/schemas/Order"
+ required:
+ - order
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - context
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /on_rating:
+ post:
+ tags:
+ - Beckn Application Platform(BAP)
+ description: Provide feedback on a service
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - on_rating
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ feedback_form:
+ description: A feedback form to allow the user to provide additional information on the rating provided
+ allOf:
+ - $ref: "#/components/schemas/XInput"
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - context
+ - message
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /on_support:
+ post:
+ tags:
+ - Beckn Application Platform(BAP)
+ description: Contact Support
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: "#/components/schemas/Context"
+ - properties:
+ action:
+ enum:
+ - on_support
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ support:
+ $ref: "#/components/schemas/Support"
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - context
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /return_reasons:
+ post:
+ tags:
+ - Beckn Application Platform(BAP)
+ description: BPP provides the list of return reasons to the BAP
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: '#/components/schemas/Context'
+ - properties:
+ action:
+ enum:
+ - return_reasons
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ return_reasons:
+ type: array
+ items:
+ $ref: '#/components/schemas/Option'
+ required:
+ - return_reasons
+ required:
+ - context
+ - message
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /rating_categories:
+ post:
+ tags:
+ - Beckn Application Platform(BAP)
+ description: BPP provides the list of entities that can be rated in its system to the BAP
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: '#/components/schemas/Context'
+ - properties:
+ action:
+ enum:
+ - rating_categories
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ rating_categories:
+ type: array
+ items:
+ $ref: '#/components/schemas/Rating/properties/rating_category'
+ required:
+ - return_reasons
+ required:
+ - context
+ - message
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+ /cancellation_reasons:
+ post:
+ tags:
+ - Beckn Application Platform(BAP)
+ description: BPP sends cancellation reasons to BAP
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ context:
+ allOf:
+ - $ref: '#/components/schemas/Context'
+ - properties:
+ action:
+ enum:
+ - cancellation_reasons
+ required:
+ - action
+ message:
+ type: object
+ properties:
+ cancellation_reasons:
+ type: array
+ items:
+ $ref: '#/components/schemas/Option'
+ required:
+ - cancellation_reasons
+ required:
+ - context
+ - message
+ responses:
+ default:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: object
+ properties:
+ ack:
+ $ref: "#/components/schemas/Ack"
+ required:
+ - ack
+ error:
+ $ref: "#/components/schemas/Error"
+ required:
+ - message
+
+ /lookup:
+ description: Look up platforms listed on the network registry. This is a protected endpoint only accessible to network participants that have subscribed to the network (i.e Subscribers). Any subscriber can query the Registry by sending a `Lookup` object. The Registry will respond with all the platforms that match the lookup parameters.
+ post:
+ tags:
+ - Registry
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Subscription'
+ responses:
+ default:
+ description: Array of subscribers matching the lookup request attributes
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Subscription'
+ /subscribe:
+ description: 'Subscribe to a network. This endpoint allows registered network participants (a.k.a Subscribers), to update their subscription details like `domain`, `location`, `signing_public_key`, `encr_public_key` on the registry. The fields that can be updated can vary from network to network. Every network policy must contain the fields that can be updated for each type of subscriber. For example, the network policy may allow BAPs and BPPs to update all fields, but BGs may not be allowed to update any field except the public keys.'
+ post:
+ tags:
+ - Registry
+ requestBody:
+ content:
+ application/json:
+ schema:
+ allOf:
+ - $ref: '#/components/schemas/Subscription'
+ - properties:
+ nonce:
+ description: A randomly generated uuid nonce value
+ type: string
+ format: uuid
+ responses:
+ default:
+ description: The Registry returns the status of the subscription request.
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ status:
+ type: string
+ enum:
+ - UNDER_SUBSCRIPTION
+ /on_subscribe:
+ description: 'This endpoint is implemented by all platforms that have successfully passed the certification and compliance requirements on a network. In this endpoint, the Subscriber receives an encrypted challenge string generated by the Registry to verify the subscription details of the Network Participant sent during the `subscribe` call. During this call, Registry also validates the SSL certificate of Subscriber. If the SSL certificate is invalid, the Registry will update the subscriber’s status = INVALID_SSL and call the Subscriber''s `on_subscribe` endpoint again. Anytime the state of the Subscriber changes in the registry, the Registry can make an unsolicited call to the subscriber''s `on_subscribe` endpoint. This request must be digitally signed by the Registry. The Registry''s public key must be published at a publicly accessible trusted location so that the Subscribers can save it on their systems.'
+ post:
+ tags:
+ - Beckn Provider Platform(BPP)
+ - Beckn Application Platform(BAP)
+ - Beckn Gateway (BG)
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ status:
+ description: The current status of the Registrant
+ type: string
+ enum:
+ - INITIATED
+ - UNDER_SUBSCRIPTION
+ - SUBSCRIBED
+ - INVALID_SSL
+ - UNSUBSCRIBED
+ challenge:
+ type: string
+ description: A random string generated by the registry encrypted with the subscriber's encryption public key
+ required:
+ - challenge
+ responses:
+ default:
+ description: Network Participant decrypts the challenge string using its private key and returns the decrypted value.
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ answer:
+ description: Decrypted challenge string
+ type: string
+ required:
+ - answer
+
+
+components:
+ schemas:
+ Ack:
+ description: "Describes the acknowledgement sent in response to an API call. If the implementation uses HTTP/S, then Ack must be returned in the same session. Every API call to a Provider Platform must be responded to with an Ack whether the Provider Platform intends to respond with a callback or not. This has one property called `status` that indicates the status of the Acknowledgement."
+ type: object
+ properties:
+ status:
+ type: string
+ description: "The status of the acknowledgement. If the request passes the validation criteria of the Provider Platform, then this is set to ACK. If a Provider Platform responds with status = `ACK` to a request, it is required to respond with a callback. If the request fails the validation criteria, then this is set to NACK. Additionally, if a Provider Platform does not intend to respond with a callback even after the request meets the validation criteria, it should set this value to `NACK`."
+ enum:
+ - ACK
+ - NACK
+ tags:
+ description: A list of tags containing any additional information sent along with the Acknowledgement.
+ type: array
+ items:
+ $ref: "#/components/schemas/TagGroup"
+ AddOn:
+ description: Describes an additional item offered as a value-addition to a product or service. This does not exist independently in a catalog and is always associated with an item.
+ type: object
+ properties:
+ id:
+ description: Provider-defined ID of the add-on
+ type: string
+ descriptor:
+ $ref: "#/components/schemas/Descriptor"
+ price:
+ $ref: "#/components/schemas/Price"
+ Address:
+ description: Describes a postal address.
+ type: string
+ Agent:
+ description: "Describes the direct performer, driver or executor that fulfills an order. It is usually a person. But in some rare cases, it could be a non-living entity like a drone, or a bot. Some examples of agents are Doctor in the healthcare sector, a driver in the mobility sector, or a delivery person in the logistics sector. This object can be set at any stage of the order lifecycle. This can be set at the discovery stage when the Provider Platform wants to provide details on the agent fulfilling the order, like in healthcare, where the doctor's name appears during search. This object can also used to search for a particular person that the customer wants fulfilling an order. Sometimes, this object gets instantiated after the order is confirmed, like in the case of on-demand taxis, where the driver is assigned after the user confirms the ride."
+ properties:
+ id:
+ type: string
+ person:
+ $ref: "#/components/schemas/Person"
+ contact:
+ $ref: "#/components/schemas/Contact"
+ organization:
+ $ref: "#/components/schemas/Organization"
+ rating:
+ $ref: "#/components/schemas/Rating/properties/value"
+ Authorization:
+ description: "Describes an authorization mechanism used to start or end the fulfillment of an order. For example, in the mobility sector, the driver may require a one-time password to initiate the ride. In the healthcare sector, a patient may need to provide a password to open a video conference link during a teleconsultation."
+ type: object
+ properties:
+ type:
+ description: Type of authorization mechanism used. The allowed values for this field can be published as part of the network policy.
+ type: string
+ token:
+ description: "Token used for authorization. This is typically generated at the Provider Platform. The Consumer Interface can send this value to the user via any channel that it uses to authenticate the user like SMS, Email, Push notification, or in-app rendering."
+ type: string
+ valid_from:
+ description: Timestamp in RFC3339 format from which token is valid
+ type: string
+ format: date-time
+ valid_to:
+ description: Timestamp in RFC3339 format until which token is valid
+ type: string
+ format: date-time
+ status:
+ description: Status of the token
+ type: string
+ Billing:
+ description: "Describes the billing details of an entity. This has properties like name,organization,address,email,phone,time,tax_number, created_at,updated_at"
+ type: object
+ properties:
+ name:
+ description: Name of the billable entity
+ type: string
+ organization:
+ description: Details of the organization being billed.
+ allOf:
+ - $ref: "#/components/schemas/Organization"
+ address:
+ description: The address of the billable entity
+ allOf:
+ - $ref: "#/components/schemas/Address"
+ state:
+ description: The state where the billable entity resides. This is important for state-level tax calculation
+ allOf:
+ - $ref: "#/components/schemas/State"
+ city:
+ description: The city where the billable entity resides.
+ allOf:
+ - $ref: "#/components/schemas/City"
+ email:
+ description: Email address where the bill is sent to
+ type: string
+ format: email
+ phone:
+ description: Phone number of the billable entity
+ type: string
+ time:
+ description: Details regarding the billing period
+ allOf:
+ - $ref: "#/components/schemas/Time"
+ tax_id:
+ description: ID of the billable entity as recognized by the taxation authority
+ type: string
+ Cancellation:
+ description: Describes a cancellation event
+ type: object
+ properties:
+ time:
+ description: Date-time when the order was cancelled by the buyer
+ type: string
+ format: date-time
+ cancelled_by:
+ type: string
+ enum:
+ - CONSUMER
+ - PROVIDER
+ reason:
+ description: The reason for cancellation
+ allOf:
+ - $ref: "#/components/schemas/Option"
+ additional_description:
+ description: Any additional information regarding the nature of cancellation
+ allOf:
+ - $ref: "#/components/schemas/Descriptor"
+ CancellationTerm:
+ description: Describes the cancellation terms of an item or an order. This can be referenced at an item or order level. Item-level cancellation terms can override the terms at the order level.
+ type: object
+ properties:
+ fulfillment_state:
+ description: The state of fulfillment during which this term is applicable.
+ allOf:
+ - $ref: "#/components/schemas/FulfillmentState"
+ reason_required:
+ description: Indicates whether a reason is required to cancel the order
+ type: boolean
+ cancel_by:
+ description: Information related to the time of cancellation.
+ allOf:
+ - $ref: "#/components/schemas/Time"
+ cancellation_fee:
+ $ref: "#/components/schemas/Fee"
+ xinput:
+ $ref: "#/components/schemas/XInput"
+ external_ref:
+ $ref: "#/components/schemas/MediaFile"
+ Catalog:
+ description: "Describes the products or services offered by a Provider Platform. This is typically sent as the response to a search intent from a Consumer Interface. The payment terms, offers and terms of fulfillment supported by the Provider Platform can also be included here. The Provider Platform can show hierarchical nature of products/services in its catalog using the parent_category_id in categories. The Provider Platform can also send a ttl (time to live) in the context which is the duration for which a Consumer Interface can cache the catalog and use the cached catalog. This has properties like bbp/descriptor,bbp/categories,bbp/fulfillments,bbp/payments,bbp/offers,bbp/providers and exp This is used in the following situations.
This is typically used in the discovery stage when the Provider Platform sends the details of the products and services it offers as response to a search intent from the Consumer Interface.
"
+ type: object
+ properties:
+ descriptor:
+ $ref: "#/components/schemas/Descriptor"
+ fulfillments:
+ description: Fulfillment modes offered at the Provider Platform level. This is used when a Provider Platform itself offers fulfillments on behalf of the providers it has onboarded.
+ type: array
+ items:
+ $ref: "#/components/schemas/Fulfillment"
+ payments:
+ description: Payment terms offered by the Provider Platform for all transactions. This can be overriden at the provider level.
+ type: array
+ items:
+ $ref: "#/components/schemas/Payment"
+ offers:
+ description: Offers at the Provider Platform-level. This is common across all providers onboarded by the Provider Platform.
+ type: array
+ items:
+ $ref: "#/components/schemas/Offer"
+ providers:
+ type: array
+ items:
+ $ref: "#/components/schemas/Provider"
+ exp:
+ description: Timestamp after which catalog will expire
+ type: string
+ format: date-time
+ ttl:
+ description: Duration in seconds after which this catalog will expire
+ type: string
+ Category:
+ description: A label under which a collection of items can be grouped.
+ type: object
+ properties:
+ id:
+ description: ID of the category
+ type: string
+ parent_category_id:
+ $ref: "#/components/schemas/Category/properties/id"
+ descriptor:
+ $ref: "#/components/schemas/Descriptor"
+ time:
+ $ref: "#/components/schemas/Time"
+ ttl:
+ description: Time to live for an instance of this schema
+ tags:
+ type: array
+ items:
+ $ref: "#/components/schemas/TagGroup"
+ Circle:
+ description: Describes a circular region of a specified radius centered at a specified GPS coordinate.
+ type: object
+ properties:
+ gps:
+ $ref: "#/components/schemas/Gps"
+ radius:
+ $ref: "#/components/schemas/Scalar"
+ City:
+ description: Describes a city
+ type: object
+ properties:
+ name:
+ description: Name of the city
+ type: string
+ code:
+ description: City code
+ type: string
+ Contact:
+ description: Describes the contact information of an entity
+ type: object
+ properties:
+ phone:
+ type: string
+ email:
+ type: string
+ jcard:
+ type: object
+ description: A Jcard object as per draft-ietf-jcardcal-jcard-03 specification
+ Context:
+ description: "Every API call in beckn protocol has a context. It provides a high-level overview to the receiver about the nature of the intended transaction. Typically, it is the Consumer Interface that sets the transaction context based on the consumer's location and action on their UI. But sometimes, during unsolicited callbacks, the Provider Platform also sets the transaction context but it is usually the same as the context of a previous full-cycle, request-callback interaction between the Consumer Interface and the Provider Platform. The context object contains four types of fields.
Demographic information about the transaction using fields like `domain`, `country`, and `region`.
Addressing details like the sending and receiving platform's ID and API URL.
Interoperability information like the protocol version that implemented by the sender and,
Transaction details like the method being called at the receiver's endpoint, the transaction_id that represents an end-to-end user session at the Consumer Interface, a message ID to pair requests with callbacks, a timestamp to capture sending times, a ttl to specifiy the validity of the request, and a key to encrypt information if necessary.
This object must be passed in every interaction between a Consumer Interface and a Provider Platform. In HTTP/S implementations, it is not necessary to send the context during the synchronous response. However, in asynchronous protocols, the context must be sent during all interactions,"
+ type: object
+ properties:
+ domain:
+ description: Domain code that is relevant to this transaction context
+ allOf:
+ - $ref: "#/components/schemas/Domain/properties/code"
+ location:
+ description: The location where the transaction is intended to be fulfilled.
+ allOf:
+ - $ref: "#/components/schemas/Location"
+ action:
+ description: The Beckn protocol method being called by the sender and executed at the receiver.
+ type: string
+ version:
+ type: string
+ description: Version of transaction protocol being used by the sender.
+ bap_id:
+ description: Subscriber ID of the Consumer Interface
+ allOf:
+ - description: "A globally unique identifier of the platform, Typically it is the fully qualified domain name (FQDN) of the platform."
+ type: string
+ bap_uri:
+ description: Subscriber URL of the Consumer Interface for accepting callbacks from Provider Platforms.
+ allOf:
+ - description: The callback URL of the Subscriber. This should necessarily contain the same domain name as set in `subscriber_id``.
+ type: string
+ format: uri
+ bpp_id:
+ description: Subscriber ID of the Provider Platform
+ allOf:
+ - $ref: "#/components/schemas/Context/properties/bap_id/allOf/0"
+ bpp_uri:
+ description: Subscriber URL of the Provider Platform for accepting calls from Consumer Interfaces.
+ allOf:
+ - $ref: "#/components/schemas/Context/properties/bap_uri/allOf/0"
+ transaction_id:
+ description: "This is a unique value which persists across all API calls from `search` through `confirm`. This is done to indicate an active user session across multiple requests. The Provider Platforms can use this value to push personalized recommendations, and dynamic offerings related to an ongoing transaction despite being unaware of the user active on the Consumer Interface."
+ type: string
+ format: uuid
+ message_id:
+ description: "This is a unique value which persists during a request / callback cycle. Since beckn protocol APIs are asynchronous, Consumer Interfaces need a common value to match an incoming callback from a Provider Platform to an earlier call. This value can also be used to ignore duplicate messages coming from the Provider Platform. It is recommended to generate a fresh message_id for every new interaction. When sending unsolicited callbacks, Provider Platforms must generate a new message_id."
+ type: string
+ format: uuid
+ timestamp:
+ description: Time of request generation in RFC3339 format
+ type: string
+ format: date-time
+ key:
+ description: The encryption public key of the sender
+ type: string
+ ttl:
+ description: The duration in ISO8601 format after timestamp for which this message holds valid
+ type: string
+ Country:
+ description: Describes a country
+ type: object
+ properties:
+ name:
+ type: string
+ description: Name of the country
+ code:
+ type: string
+ description: Country code as per ISO 3166-1 and ISO 3166-2 format
+ Credential:
+ description: Describes a credential of an entity - Person or Organization
+ type: object
+ properties:
+ id:
+ type: string
+ type:
+ type: string
+ default: VerifiableCredential
+ url:
+ description: URL of the credential
+ type: string
+ format: uri
+ Customer:
+ description: Describes a customer buying/availing a product or a service
+ type: object
+ properties:
+ person:
+ $ref: "#/components/schemas/Person"
+ contact:
+ $ref: "#/components/schemas/Contact"
+ DecimalValue:
+ description: Describes a numerical value in decimal form
+ type: string
+ pattern: "[+-]?([0-9]*[.])?[0-9]+"
+ Descriptor:
+ description: Physical description of something.
+ type: object
+ properties:
+ name:
+ type: string
+ code:
+ type: string
+ short_desc:
+ type: string
+ long_desc:
+ type: string
+ additional_desc:
+ type: object
+ properties:
+ url:
+ type: string
+ content_type:
+ type: string
+ enum:
+ - text/plain
+ - text/html
+ - application/json
+ media:
+ type: array
+ items:
+ $ref: "#/components/schemas/MediaFile"
+ images:
+ type: array
+ items:
+ $ref: "#/components/schemas/Image"
+ Domain:
+ description: "Described the industry sector or sub-sector. The network policy should contain codes for all the industry sectors supported by the network. Domains can be created in varying levels of granularity. The granularity of a domain can be decided by the participants of the network. Too broad domains will result in irrelevant search broadcast calls to Provider Platforms that don't have services supporting the domain. Too narrow domains will result in a large number of registry entries for each Provider Platform. It is recommended that network facilitators actively collaborate with various working groups and network participants to carefully choose domain codes keeping in mind relevance, performance, and opportunity cost. It is recommended that networks choose broad domains like mobility, logistics, healthcare etc, and progressively granularize them as and when the number of network participants for each domain grows large."
+ type: object
+ properties:
+ name:
+ description: Name of the domain
+ type: string
+ code:
+ description: "Standard code representing the domain. The standard is usually published as part of the network policy. Furthermore, the network facilitator should also provide a mechanism to provide the supported domains of a network."
+ additional_info:
+ description: A url that contains addtional information about that domain.
+ allOf:
+ - $ref: "#/components/schemas/MediaFile"
+ Duration:
+ description: Describes duration as per ISO8601 format
+ type: string
+ Error:
+ description: "Describes an error object that is returned by a Consumer Interface, Provider Platform or BG as a response or callback to an action by another network participant. This object is sent when any request received by a network participant is unacceptable. This object can be sent either during Ack or with the callback."
+ type: object
+ properties:
+ code:
+ type: string
+ description: 'Standard error code. For full list of error codes, refer to docs/protocol-drafts/BECKN-005-ERROR-CODES-DRAFT-01.md of this repo"'
+ paths:
+ type: string
+ description: Path to json schema generating the error. Used only during json schema validation errors
+ message:
+ type: string
+ description: Human readable message describing the error. Used mainly for logging. Not recommended to be shown to the user.
+ Fee:
+ description: A fee applied on a particular entity
+ type: object
+ properties:
+ percentage:
+ description: Percentage of a value
+ allOf:
+ - $ref: "#/components/schemas/DecimalValue"
+ amount:
+ description: A fixed value
+ allOf:
+ - $ref: "#/components/schemas/Price"
+ Form:
+ description: Describes a form
+ type: object
+ properties:
+ id:
+ type: string
+ description: ID of the form
+ url:
+ description: "The URL from where the form can be fetched. The content fetched from the url must be processed as per the mime_type specified in this object. Once fetched, the rendering platform can choosed to render the form as-is as an embeddable element; or process it further to blend with the theme of the application. In case the interface is non-visual, the the render can process the form data and reproduce it as per the standard specified in the form."
+ type: string
+ format: uri
+ data:
+ description: The form submission data
+ type: object
+ additionalProperties:
+ type: string
+ mime_type:
+ description: This field indicates the nature and format of the form received by querying the url. MIME types are defined and standardized in IETF's RFC 6838.
+ type: string
+ enum:
+ - text/html
+ - application/xml
+ submission_id:
+ type: string
+ format: uuid
+ Fulfillment:
+ description: Describes how a an order will be rendered/fulfilled to the end-customer
+ type: object
+ properties:
+ id:
+ description: Unique reference ID to the fulfillment of an order
+ type: string
+ type:
+ description: "A code that describes the mode of fulfillment. This is typically set when there are multiple ways an order can be fulfilled. For example, a retail order can be fulfilled either via store pickup or a home delivery. Similarly, a medical consultation can be provided either in-person or via tele-consultation. The network policy must publish standard fulfillment type codes for the different modes of fulfillment."
+ type: string
+ rateable:
+ description: Whether the fulfillment can be rated or not
+ type: boolean
+ rating:
+ description: The rating value of the fulfullment service.
+ allOf:
+ - $ref: "#/components/schemas/Rating/properties/value"
+ state:
+ description: The current state of fulfillment. The Provider Platform must set this value whenever the state of the order fulfillment changes and fire an unsolicited `on_status` call.
+ allOf:
+ - $ref: "#/components/schemas/FulfillmentState"
+ tracking:
+ type: boolean
+ description: Indicates whether the fulfillment allows tracking
+ default: false
+ customer:
+ description: The person that will ultimately receive the order
+ allOf:
+ - $ref: "#/components/schemas/Customer"
+ agent:
+ description: The agent that is currently handling the fulfillment of the order
+ allOf:
+ - $ref: "#/components/schemas/Agent"
+ contact:
+ $ref: "#/components/schemas/Contact"
+ vehicle:
+ $ref: "#/components/schemas/Vehicle"
+ stops:
+ description: The list of logical stops encountered during the fulfillment of an order.
+ type: array
+ items:
+ $ref: "#/components/schemas/Stop"
+ path:
+ description: The physical path taken by the agent that can be rendered on a map. The allowed format of this property can be set by the network.
+ type: string
+ tags:
+ type: array
+ items:
+ $ref: "#/components/schemas/TagGroup"
+ FulfillmentState:
+ description: Describes the state of fulfillment
+ type: object
+ properties:
+ descriptor:
+ $ref: "#/components/schemas/Descriptor"
+ updated_at:
+ type: string
+ format: date-time
+ updated_by:
+ type: string
+ description: ID of entity which changed the state
+ Gps:
+ description: Describes a GPS coordinate
+ type: string
+ pattern: '^[-+]?([1-8]?\d(\.\d+)?|90(\.0+)?),\s*[-+]?(180(\.0+)?|((1[0-7]\d)|([1-9]?\d))(\.\d+)?)$'
+ Image:
+ description: Describes an image
+ type: object
+ properties:
+ url:
+ description: URL to the image. This can be a data url or an remote url
+ type: string
+ format: uri
+ size_type:
+ description: The size of the image. The network policy can define the default dimensions of each type
+ type: string
+ enum:
+ - xs
+ - sm
+ - md
+ - lg
+ - xl
+ - custom
+ width:
+ description: Width of the image in pixels
+ type: string
+ height:
+ description: Height of the image in pixels
+ type: string
+ Intent:
+ description: "The intent to buy or avail a product or a service. The Consumer Interface can declare the intent of the consumer containing
What they want (A product, service, offer)
Who they want (A seller, service provider, agent etc)
Where they want it and where they want it from
When they want it (start and end time of fulfillment
How they want to pay for it
This has properties like descriptor,provider,fulfillment,payment,category,offer,item,tags This is typically used by the Consumer Interface to send the purpose of the user's search to the Provider Platform. This will be used by the Provider Platform to find products or services it offers that may match the user's intent. For example, in Mobility, the mobility consumer declares a mobility intent. In this case, the mobility consumer declares information that describes various aspects of their journey like,
Where would they like to begin their journey (intent.fulfillment.start.location)
Where would they like to end their journey (intent.fulfillment.end.location)
When would they like to begin their journey (intent.fulfillment.start.time)
When would they like to end their journey (intent.fulfillment.end.time)
Who is the transport service provider they would like to avail services from (intent.provider)
Who is traveling (This is not recommended in public networks) (intent.fulfillment.customer)
What kind of fare product would they like to purchase (intent.item)
What add-on services would they like to avail
What offers would they like to apply on their booking (intent.offer)
What category of services would they like to avail (intent.category)
What additional luggage are they carrying
How would they like to pay for their journey (intent.payment)
For example, in health domain, a consumer declares the intent for a lab booking the describes various aspects of their booking like,
Where would they like to get their scan/test done (intent.fulfillment.start.location)
When would they like to get their scan/test done (intent.fulfillment.start.time)
When would they like to get the results of their test/scan (intent.fulfillment.end.time)
Who is the service provider they would like to avail services from (intent.provider)
Who is getting the test/scan (intent.fulfillment.customer)
What kind of test/scan would they like to purchase (intent.item)
What category of services would they like to avail (intent.category)
How would they like to pay for their journey (intent.payment)
"
+ type: object
+ properties:
+ descriptor:
+ description: "A raw description of the search intent. Free text search strings, raw audio, etc can be sent in this object."
+ allOf:
+ - $ref: "#/components/schemas/Descriptor"
+ provider:
+ description: The provider from which the customer wants to place to the order from
+ allOf:
+ - $ref: "#/components/schemas/Provider"
+ fulfillment:
+ description: Details on how the customer wants their order fulfilled
+ allOf:
+ - $ref: "#/components/schemas/Fulfillment"
+ payment:
+ description: Details on how the customer wants to pay for the order
+ allOf:
+ - $ref: "#/components/schemas/Payment"
+ category:
+ description: Details on the item category
+ allOf:
+ - $ref: "#/components/schemas/Category"
+ offer:
+ description: details on the offer the customer wants to avail
+ allOf:
+ - $ref: "#/components/schemas/Offer"
+ item:
+ description: Details of the item that the consumer wants to order
+ allOf:
+ - $ref: "#/components/schemas/Item"
+ tags:
+ type: array
+ items:
+ $ref: "#/components/schemas/TagGroup"
+ ItemQuantity:
+ description: Describes the count or amount of an item
+ type: object
+ properties:
+ allocated:
+ description: This represents the exact quantity allocated for purchase of the item.
+ type: object
+ properties:
+ count:
+ type: integer
+ minimum: 0
+ measure:
+ $ref: "#/components/schemas/Scalar"
+ available:
+ description: This represents the exact quantity available for purchase of the item. The buyer can only purchase multiples of this
+ type: object
+ properties:
+ count:
+ type: integer
+ minimum: 0
+ measure:
+ $ref: "#/components/schemas/Scalar"
+ maximum:
+ description: This represents the maximum quantity allowed for purchase of the item
+ type: object
+ properties:
+ count:
+ type: integer
+ minimum: 1
+ measure:
+ $ref: "#/components/schemas/Scalar"
+ minimum:
+ description: This represents the minimum quantity allowed for purchase of the item
+ type: object
+ properties:
+ count:
+ type: integer
+ minimum: 0
+ measure:
+ $ref: "#/components/schemas/Scalar"
+ selected:
+ description: This represents the quantity selected for purchase of the item
+ type: object
+ properties:
+ count:
+ type: integer
+ minimum: 0
+ measure:
+ $ref: "#/components/schemas/Scalar"
+ unitized:
+ description: This represents the quantity available in a single unit of the item
+ type: object
+ properties:
+ count:
+ type: integer
+ minimum: 1
+ maximum: 1
+ measure:
+ $ref: "#/components/schemas/Scalar"
+ Item:
+ description: "Describes a product or a service offered to the end consumer by the provider. In the mobility sector, it can represent a fare product like one way journey. In the logistics sector, it can represent the delivery service offering. In the retail domain it can represent a product like a grocery item."
+ type: object
+ properties:
+ id:
+ description: ID of the item.
+ type: string
+ parent_item_id:
+ description: "ID of the item, this item is a variant of"
+ allOf:
+ - $ref: "#/components/schemas/Item/properties/id"
+ parent_item_quantity:
+ description: The number of units of the parent item this item is a multiple of
+ allOf:
+ - $ref: "#/components/schemas/ItemQuantity"
+ descriptor:
+ description: Physical description of the item
+ allOf:
+ - $ref: "#/components/schemas/Descriptor"
+ creator:
+ description: The creator of this item
+ allOf:
+ - $ref: "#/components/schemas/Organization"
+ price:
+ description: "The price of this item, if it has intrinsic value"
+ allOf:
+ - $ref: "#/components/schemas/Price"
+ quantity:
+ description: The selling quantity of the item
+ allOf:
+ - $ref: "#/components/schemas/ItemQuantity"
+ category_ids:
+ description: Categories this item can be listed under
+ type: array
+ items:
+ allOf:
+ - $ref: "#/components/schemas/Category/properties/id"
+ fulfillment_ids:
+ description: Modes through which this item can be fulfilled
+ type: array
+ items:
+ allOf:
+ - $ref: "#/components/schemas/Fulfillment/properties/id"
+ location_ids:
+ description: Provider Locations this item is available in
+ type: array
+ items:
+ allOf:
+ - $ref: "#/components/schemas/Location/properties/id"
+ payment_ids:
+ description: Payment modalities through which this item can be ordered
+ type: array
+ items:
+ allOf:
+ - $ref: "#/components/schemas/Payment/properties/id"
+ add_ons:
+ type: array
+ items:
+ $ref: "#/components/schemas/AddOn"
+ cancellation_terms:
+ description: Cancellation terms of this item
+ type: array
+ items:
+ $ref: "#/components/schemas/CancellationTerm"
+ refund_terms:
+ description: Refund terms of this item
+ type: array
+ items:
+ description: Refund term of an item or an order
+ type: object
+ properties:
+ fulfillment_state:
+ description: The state of fulfillment during which this term is applicable.
+ allOf:
+ - $ref: "#/components/schemas/State"
+ refund_eligible:
+ description: Indicates if cancellation will result in a refund
+ type: boolean
+ refund_within:
+ description: Time within which refund will be processed after successful cancellation.
+ allOf:
+ - $ref: "#/components/schemas/Time"
+ refund_amount:
+ $ref: "#/components/schemas/Price"
+ replacement_terms:
+ description: Terms that are applicable be met when this item is replaced
+ type: array
+ items:
+ $ref: "#/components/schemas/ReplacementTerm"
+ return_terms:
+ description: Terms that are applicable when this item is returned
+ type: array
+ items:
+ $ref: "#/components/schemas/ReturnTerm"
+ xinput:
+ description: Additional input required from the customer to purchase / avail this item
+ allOf:
+ - $ref: "#/components/schemas/XInput"
+ time:
+ description: Temporal attributes of this item. This property is used when the item exists on the catalog only for a limited period of time.
+ allOf:
+ - $ref: "#/components/schemas/Time"
+ rateable:
+ description: Whether this item can be rated
+ type: boolean
+ rating:
+ description: The rating of the item
+ allOf:
+ - $ref: "#/components/schemas/Rating/properties/value"
+ matched:
+ description: Whether this item is an exact match of the request
+ type: boolean
+ related:
+ description: Whether this item is a related item to the exactly matched item
+ type: boolean
+ recommended:
+ description: Whether this item is a recommended item to a response
+ type: boolean
+ ttl:
+ description: Time to live in seconds for an instance of this schema
+ type: string
+ tags:
+ type: array
+ items:
+ $ref: "#/components/schemas/TagGroup"
+ Location:
+ description: The physical location of something
+ type: object
+ properties:
+ id:
+ type: string
+ descriptor:
+ $ref: "#/components/schemas/Descriptor"
+ map_url:
+ description: The url to the map of the location. This can be a globally recognized map url or the one specified by the network policy.
+ type: string
+ format: uri
+ gps:
+ description: The GPS co-ordinates of this location.
+ allOf:
+ - $ref: "#/components/schemas/Gps"
+ address:
+ description: The address of this location.
+ allOf:
+ - $ref: "#/components/schemas/Address"
+ city:
+ description: "The city this location is, or is located within"
+ allOf:
+ - $ref: "#/components/schemas/City"
+ district:
+ description: "The state this location is, or is located within"
+ type: string
+ state:
+ description: "The state this location is, or is located within"
+ allOf:
+ - $ref: "#/components/schemas/State"
+ country:
+ description: "The country this location is, or is located within"
+ allOf:
+ - $ref: "#/components/schemas/Country"
+ area_code:
+ type: string
+ circle:
+ $ref: "#/components/schemas/Circle"
+ polygon:
+ description: The boundary polygon of this location
+ type: string
+ 3dspace:
+ description: The three dimensional region describing this location
+ type: string
+ rating:
+ description: The rating of this location
+ allOf:
+ - $ref: "#/components/schemas/Rating/properties/value"
+ MediaFile:
+ description: This object contains a url to a media file.
+ type: object
+ properties:
+ mimetype:
+ description: "indicates the nature and format of the document, file, or assortment of bytes. MIME types are defined and standardized in IETF's RFC 6838"
+ type: string
+ url:
+ description: The URL of the file
+ type: string
+ format: uri
+ signature:
+ description: The digital signature of the file signed by the sender
+ type: string
+ dsa:
+ description: The signing algorithm used by the sender
+ type: string
+ Offer:
+ description: An offer associated with a catalog. This is typically used to promote a particular product and enable more purchases.
+ type: object
+ properties:
+ id:
+ type: string
+ descriptor:
+ $ref: "#/components/schemas/Descriptor"
+ location_ids:
+ type: array
+ items:
+ $ref: "#/components/schemas/Location/properties/id"
+ category_ids:
+ type: array
+ items:
+ $ref: "#/components/schemas/Category/properties/id"
+ item_ids:
+ type: array
+ items:
+ $ref: "#/components/schemas/Item/properties/id"
+ time:
+ $ref: "#/components/schemas/Time"
+ tags:
+ type: array
+ items:
+ $ref: "#/components/schemas/TagGroup"
+ Option:
+ description: Describes a selectable option
+ type: object
+ properties:
+ id:
+ type: string
+ descriptor:
+ $ref: "#/components/schemas/Descriptor"
+ Order:
+ description: Describes a legal purchase order. It contains the complete details of the legal contract created between the buyer and the seller.
+ type: object
+ properties:
+ id:
+ type: string
+ description: Human-readable ID of the order. This is generated at the Provider Platform layer. The Provider Platform can either generate order id within its system or forward the order ID created at the provider level.
+ ref_order_ids:
+ description: A list of order IDs to link this order to previous orders.
+ type: array
+ items:
+ type: string
+ description: ID of a previous order
+ status:
+ description: Status of the order. Allowed values can be defined by the network policy
+ type: string
+ enum:
+ - ACTIVE
+ - COMPLETE
+ - CANCELLED
+ type:
+ description: "This is used to indicate the type of order being created to Provider Platforms. Sometimes orders can be linked to previous orders, like a replacement order in a retail domain. A follow-up consultation in healthcare domain. A single order part of a subscription order. The list of order types can be standardized at the network level."
+ type: string
+ default: DEFAULT
+ enum:
+ - DRAFT
+ - DEFAULT
+ provider:
+ description: Details of the provider whose catalog items have been selected.
+ allOf:
+ - $ref: "#/components/schemas/Provider"
+ items:
+ description: The items purchased / availed in this order
+ type: array
+ items:
+ $ref: "#/components/schemas/Item"
+ add_ons:
+ description: The add-ons purchased / availed in this order
+ type: array
+ items:
+ $ref: "#/components/schemas/AddOn"
+ offers:
+ description: The offers applied in this order
+ type: array
+ items:
+ $ref: "#/components/schemas/Offer"
+ billing:
+ description: The billing details of this order
+ allOf:
+ - $ref: "#/components/schemas/Billing"
+ fulfillments:
+ description: The fulfillments involved in completing this order
+ type: array
+ items:
+ $ref: "#/components/schemas/Fulfillment"
+ cancellation:
+ description: The cancellation details of this order
+ allOf:
+ - $ref: "#/components/schemas/Cancellation"
+ cancellation_terms:
+ description: Cancellation terms of this item
+ type: array
+ items:
+ $ref: "#/components/schemas/CancellationTerm"
+ refund_terms:
+ description: Refund terms of this item
+ type: array
+ items:
+ $ref: "#/components/schemas/Item/properties/refund_terms/items"
+ replacement_terms:
+ description: Replacement terms of this item
+ type: array
+ items:
+ $ref: "#/components/schemas/ReplacementTerm"
+ return_terms:
+ description: Return terms of this item
+ type: array
+ items:
+ $ref: "#/components/schemas/ReturnTerm"
+ quote:
+ description: The mutually agreed upon quotation for this order.
+ allOf:
+ - $ref: "#/components/schemas/Quotation"
+ payments:
+ description: The terms of settlement for this order
+ type: array
+ items:
+ $ref: "#/components/schemas/Payment"
+ created_at:
+ description: The date-time of creation of this order
+ type: string
+ format: date-time
+ updated_at:
+ description: The date-time of updated of this order
+ type: string
+ format: date-time
+ xinput:
+ description: Additional input required from the customer to confirm this order
+ allOf:
+ - $ref: "#/components/schemas/XInput"
+ tags:
+ type: array
+ items:
+ $ref: "#/components/schemas/TagGroup"
+ Organization:
+ description: An organization. Usually a recognized business entity.
+ type: object
+ properties:
+ descriptor:
+ $ref: "#/components/schemas/Descriptor"
+ address:
+ description: The postal address of the organization
+ allOf:
+ - $ref: "#/components/schemas/Address"
+ state:
+ description: The state where the organization's address is registered
+ allOf:
+ - $ref: "#/components/schemas/State"
+ city:
+ description: The city where the the organization's address is registered
+ allOf:
+ - $ref: "#/components/schemas/City"
+ contact:
+ $ref: "#/components/schemas/Contact"
+ Payment:
+ description: "Describes the terms of settlement between the Consumer Interface and the Provider Platform for a single transaction. When instantiated, this object contains
the amount that has to be settled,
The payment destination destination details
When the settlement should happen, and
A transaction reference ID
. During a transaction, the Provider Platform reserves the right to decide the terms of payment. However, the Consumer Interface can send its terms to the Provider Platform first. If the Provider Platform does not agree to those terms, it must overwrite the terms and return them to the Consumer Interface. If overridden, the Consumer Interface must either agree to the terms sent by the Provider Platform in order to preserve the provider's autonomy, or abort the transaction. In case of such disagreements, the Consumer Interface and the Provider Platform can perform offline negotiations on the payment terms. Once an agreement is reached, the Consumer Interface and Provider Platform can resume transactions."
+ type: object
+ properties:
+ id:
+ description: ID of the payment term that can be referred at an item or an order level in a catalog
+ type: string
+ collected_by:
+ description: "This field indicates who is the collector of payment. The Consumer Interface can set this value to 'Consumer Interface' if it wants to collect the payment first and settle it to the Provider Platform. If the Provider Platform agrees to those terms, the Provider Platform should not send the payment url. Alternatively, the Provider Platform can set this field with the value 'Provider Platform' if it wants the payment to be made directly."
+ url:
+ type: string
+ description: "A payment url to be called by the Consumer Interface. If empty, then the payment is to be done offline. The details of payment should be present in the params object. If tl_method = http/get, then the payment details will be sent as url params. Two url param values, ```$transaction_id``` and ```$amount``` are mandatory."
+ format: uri
+ params:
+ type: object
+ properties:
+ transaction_id:
+ type: string
+ description: The reference transaction ID associated with a payment activity
+ amount:
+ type: string
+ currency:
+ type: string
+ bank_code:
+ type: string
+ bank_account_number:
+ type: string
+ virtual_payment_address:
+ type: string
+ source_bank_code:
+ type: string
+ source_bank_account_number:
+ type: string
+ source_virtual_payment_address:
+ type: string
+ type:
+ type: string
+ enum:
+ - PRE-ORDER
+ - PRE-FULFILLMENT
+ - ON-FULFILLMENT
+ - POST-FULFILLMENT
+ status:
+ type: string
+ enum:
+ - PAID
+ - NOT-PAID
+ time:
+ $ref: "#/components/schemas/Time"
+ tags:
+ type: array
+ items:
+ $ref: "#/components/schemas/TagGroup"
+ Person:
+ description: Describes a person as any individual
+ type: object
+ properties:
+ id:
+ type: string
+ description: Describes the identity of the person
+ url:
+ description: Profile url of the person
+ type: string
+ format: uri
+ name:
+ description: the name of the person
+ type: string
+ image:
+ $ref: "#/components/schemas/Image"
+ age:
+ description: Age of the person
+ allOf:
+ - $ref: "#/components/schemas/Duration"
+ dob:
+ description: Date of birth of the person
+ type: string
+ format: date
+ gender:
+ type: string
+ description: "Gender of something, typically a Person, but possibly also fictional characters, animals, etc. While Male and Female may be used, text strings are also acceptable for people who do not identify as a binary gender.Allowed values for this field can be published in the network policy"
+ creds:
+ type: array
+ items:
+ $ref: "#/components/schemas/Credential"
+ languages:
+ type: array
+ items:
+ description: Describes a language known to the person.
+ type: object
+ properties:
+ code:
+ type: string
+ name:
+ type: string
+ skills:
+ type: array
+ items:
+ description: Describes a skill of the person.
+ type: object
+ properties:
+ code:
+ type: string
+ name:
+ type: string
+ tags:
+ type: array
+ items:
+ $ref: "#/components/schemas/TagGroup"
+ Price:
+ description: Describes the price of a product or service
+ type: object
+ properties:
+ currency:
+ type: string
+ value:
+ $ref: "#/components/schemas/DecimalValue"
+ estimated_value:
+ $ref: "#/components/schemas/DecimalValue"
+ computed_value:
+ $ref: "#/components/schemas/DecimalValue"
+ listed_value:
+ $ref: "#/components/schemas/DecimalValue"
+ offered_value:
+ $ref: "#/components/schemas/DecimalValue"
+ minimum_value:
+ $ref: "#/components/schemas/DecimalValue"
+ maximum_value:
+ $ref: "#/components/schemas/DecimalValue"
+ Provider:
+ description: Describes the catalog of a business.
+ type: object
+ properties:
+ id:
+ type: string
+ description: Id of the provider
+ descriptor:
+ $ref: "#/components/schemas/Descriptor"
+ category_id:
+ type: string
+ description: Category Id of the provider at the Provider Platform-level catalog
+ rating:
+ $ref: "#/components/schemas/Rating/properties/value"
+ time:
+ $ref: "#/components/schemas/Time"
+ categories:
+ type: array
+ items:
+ $ref: "#/components/schemas/Category"
+ fulfillments:
+ type: array
+ items:
+ $ref: "#/components/schemas/Fulfillment"
+ payments:
+ type: array
+ items:
+ $ref: "#/components/schemas/Payment"
+ locations:
+ type: array
+ items:
+ $ref: "#/components/schemas/Location"
+ offers:
+ type: array
+ items:
+ $ref: "#/components/schemas/Offer"
+ items:
+ type: array
+ items:
+ $ref: "#/components/schemas/Item"
+ exp:
+ type: string
+ description: Time after which catalog has to be refreshed
+ format: date-time
+ rateable:
+ description: Whether this provider can be rated or not
+ type: boolean
+ ttl:
+ description: "The time-to-live in seconds, for this object. This can be overriden at deeper levels. A value of -1 indicates that this object is not cacheable."
+ type: integer
+ minimum: -1
+ tags:
+ type: array
+ items:
+ $ref: "#/components/schemas/TagGroup"
+ Quotation:
+ description: "Describes a quote. It is the estimated price of products or services from the Provider Platform. This has properties like price, breakup, ttl"
+ type: object
+ properties:
+ id:
+ description: ID of the quote.
+ type: string
+ format: uuid
+ price:
+ description: The total quoted price
+ allOf:
+ - $ref: "#/components/schemas/Price"
+ breakup:
+ description: the breakup of the total quoted price
+ type: array
+ items:
+ type: object
+ properties:
+ item:
+ $ref: "#/components/schemas/Item"
+ title:
+ type: string
+ price:
+ $ref: "#/components/schemas/Price"
+ ttl:
+ $ref: "#/components/schemas/Duration"
+ Rating:
+ description: Describes the rating of an entity
+ type: object
+ properties:
+ rating_category:
+ description: Category of the entity being rated
+ type: string
+ enum:
+ - Item
+ - Order
+ - Fulfillment
+ - Provider
+ - Agent
+ - Support
+ id:
+ description: Id of the object being rated
+ type: string
+ value:
+ description: "Rating value given to the object. This can be a single value or can also contain an inequality operator like gt, gte, lt, lte. This can also contain an inequality expression containing logical operators like && and ||."
+ type: string
+ Region:
+ description: Describes an arbitrary region of space. The network policy should contain a published list of supported regions by the network.
+ type: object
+ properties:
+ dimensions:
+ description: "The number of dimensions that are used to describe any point inside that region. The most common dimensionality of a region is 2, that represents an area on a map. There are regions on the map that can be approximated to one-dimensional regions like roads, railway lines, or shipping lines. 3 dimensional regions are rarer, but are gaining popularity as flying drones are being adopted for various fulfillment services."
+ type: string
+ enum:
+ - "1"
+ - "2"
+ - "3"
+ type:
+ description: "The type of region. This is used to specify the granularity of the region represented by this object. Various examples of two-dimensional region types are city, country, state, district, and so on. The network policy should contain a list of all possible region types supported by the network."
+ type: string
+ name:
+ type: string
+ description: Name of the region as specified on the map where that region exists.
+ code:
+ type: string
+ description: A standard code representing the region. This should be interpreted in the same way by all network participants.
+ boundary:
+ type: string
+ description: "A string representing the boundary of the region. One-dimensional regions are represented by polylines. Two-dimensional regions are represented by polygons, and three-dimensional regions can represented by polyhedra."
+ map_url:
+ type: string
+ description: The url to the map of the region. This can be a globally recognized map or the one specified by the network policy.
+ ReplacementTerm:
+ description: The replacement policy of an item or an order
+ type: object
+ properties:
+ fulfillment_state:
+ description: The state of fulfillment during which this term is applicable.
+ allOf:
+ - $ref: "#/components/schemas/State"
+ replace_within:
+ description: "Applicable only for buyer managed returns where the buyer has to replace the item before a certain date-time, failing which they will not be eligible for replacement"
+ allOf:
+ - $ref: "#/components/schemas/Time"
+ external_ref:
+ $ref: "#/components/schemas/MediaFile"
+ ReturnTerm:
+ description: Describes the return policy of an item or an order
+ type: object
+ properties:
+ fulfillment_state:
+ description: The state of fulfillment during which this term IETF''s applicable.
+ allOf:
+ - $ref: "#/components/schemas/State"
+ return_eligible:
+ description: Indicates whether the item is eligible for return
+ type: boolean
+ return_time:
+ description: "Applicable only for buyer managed returns where the buyer has to return the item to the origin before a certain date-time, failing which they will not be eligible for refund."
+ allOf:
+ - $ref: "#/components/schemas/Time"
+ return_location:
+ description: The location where the item or order must / will be returned to
+ allOf:
+ - $ref: "#/components/schemas/Location"
+ fulfillment_managed_by:
+ description: The entity that will perform the return
+ type: string
+ enum:
+ - CONSUMER
+ - PROVIDER
+ Scalar:
+ description: Describes a scalar
+ type: object
+ properties:
+ type:
+ type: string
+ enum:
+ - CONSTANT
+ - VARIABLE
+ value:
+ $ref: "#/components/schemas/DecimalValue"
+ estimated_value:
+ $ref: "#/components/schemas/DecimalValue"
+ computed_value:
+ $ref: "#/components/schemas/DecimalValue"
+ range:
+ type: object
+ properties:
+ min:
+ $ref: "#/components/schemas/DecimalValue"
+ max:
+ $ref: "#/components/schemas/DecimalValue"
+ unit:
+ type: string
+ Schedule:
+ description: "Describes schedule as a repeating time period used to describe a regularly recurring event. At a minimum a schedule will specify frequency which describes the interval between occurrences of the event. Additional information can be provided to specify the schedule more precisely. This includes identifying the timestamps(s) of when the event will take place. Schedules may also have holidays to exclude a specific day from the schedule. This has properties like frequency, holidays, times"
+ type: object
+ properties:
+ frequency:
+ $ref: "#/components/schemas/Duration"
+ holidays:
+ type: array
+ items:
+ type: string
+ format: date-time
+ times:
+ type: array
+ items:
+ type: string
+ format: date-time
+ State:
+ description: A bounded geopolitical region of governance inside a country.
+ type: object
+ properties:
+ name:
+ type: string
+ description: Name of the state
+ code:
+ type: string
+ description: State code as per country or international standards
+ Stop:
+ description: A logical point in space and time during the fulfillment of an order.
+ type: object
+ properties:
+ id:
+ type: string
+ parent_stop_id:
+ type: string
+ location:
+ description: Location of the stop
+ allOf:
+ - $ref: "#/components/schemas/Location"
+ type:
+ description: The type of stop. Allowed values of this property can be defined by the network policy.
+ type: string
+ time:
+ description: Timings applicable at the stop.
+ allOf:
+ - $ref: "#/components/schemas/Time"
+ instructions:
+ description: Instructions that need to be followed at the stop
+ allOf:
+ - $ref: "#/components/schemas/Descriptor"
+ contact:
+ description: Contact details of the stop
+ allOf:
+ - $ref: "#/components/schemas/Contact"
+ person:
+ description: The details of the person present at the stop
+ allOf:
+ - $ref: "#/components/schemas/Person"
+ authorization:
+ $ref: "#/components/schemas/Authorization"
+ Support:
+ description: Details of customer support
+ type: object
+ properties:
+ descriptor:
+ $ref: "#/components/schemas/Descriptor"
+ order_id:
+ type: string
+ callback_phone:
+ type: string
+ format: phone
+ chat:
+ type: object
+ properties:
+ url:
+ description: Chat URL
+ type: string
+ session_id:
+ description: Chat session ID
+ type: string
+ faq:
+ description: Link to the FAQ document
+ type: object
+ properties:
+ url:
+ type: string
+ mime_type:
+ type: string
+ agent:
+ $ref: "#/components/schemas/Agent"
+ Tag:
+ description: "Describes a tag. This is used to contain extended metadata. This object can be added as a property to any schema to describe extended attributes. For Consumer Interfaces, tags can be sent during search to optimize and filter search results. Provider Platforms can use tags to index their catalog to allow better search functionality. Tags are sent by the Provider Platform as part of the catalog response in the `on_search` callback. Tags are also meant for display purposes. Upon receiving a tag, Consumer Interfaces are meant to render them as name-value pairs. This is particularly useful when rendering tabular information about a product or service."
+ type: object
+ properties:
+ descriptor:
+ description: "Description of the Tag, can be used to store detailed information."
+ allOf:
+ - $ref: "#/components/schemas/Descriptor"
+ value:
+ description: The value of the tag. This set by the Provider Platform and rendered as-is by the Consumer Interface.
+ type: string
+ display:
+ description: "This value indicates if the tag is intended for display purposes. If set to `true`, then this tag must be displayed. If it is set to `false`, it should not be displayed. This value can override the group display value."
+ type: boolean
+ TagGroup:
+ description: "A collection of tag objects with group level attributes. For detailed documentation on the Tags and Tag Groups schema go to https://github.com/beckn/protocol-specifications/discussions/316"
+ type: object
+ properties:
+ display:
+ description: "Indicates the display properties of the tag group. If display is set to false, then the group will not be displayed. If it is set to true, it should be displayed. However, group-level display properties can be overriden by individual tag-level display property. As this schema is purely for catalog display purposes, it is not recommended to send this value during search."
+ type: boolean
+ default: true
+ descriptor:
+ description: "Description of the TagGroup, can be used to store detailed information."
+ allOf:
+ - $ref: "#/components/schemas/Descriptor"
+ list:
+ description: "An array of Tag objects listed under this group. This property can be set by Consumer Interfaces during search to narrow the `search` and achieve more relevant results. When received during `on_search`, Consumer Interfaces must render this list under the heading described by the `name` property of this schema."
+ type: array
+ items:
+ $ref: "#/components/schemas/Tag"
+ Time:
+ description: "Describes time in its various forms. It can be a single point in time; duration; or a structured timetable of operations This has properties like label, time stamp,duration,range, days, schedule"
+ type: object
+ properties:
+ label:
+ type: string
+ timestamp:
+ type: string
+ format: date-time
+ duration:
+ $ref: "#/components/schemas/Duration"
+ range:
+ type: object
+ properties:
+ start:
+ type: string
+ format: date-time
+ end:
+ type: string
+ format: date-time
+ days:
+ type: string
+ description: comma separated values representing days of the week
+ schedule:
+ $ref: "#/components/schemas/Schedule"
+ Tracking:
+ description: Contains tracking information that can be used by the Consumer Interface to track the fulfillment of an order in real-time. which is useful for knowing the location of time sensitive deliveries.
+ type: object
+ properties:
+ id:
+ description: A unique tracking reference number
+ type: string
+ url:
+ description: "A URL to the tracking endpoint. This can be a link to a tracking webpage, a webhook URL created by the Consumer Interface where Provider Platform can push the tracking data, or a GET url creaed by the Provider Platform which the Consumer Interface can poll to get the tracking data. It can also be a websocket URL where the Provider Platform can push real-time tracking data."
+ type: string
+ format: uri
+ location:
+ description: "In case there is no real-time tracking endpoint available, this field will contain the latest location of the entity being tracked. The Provider Platform will update this value everytime the Consumer Interface calls the track API."
+ allOf:
+ - $ref: "#/components/schemas/Location"
+ status:
+ description: "This value indicates if the tracking is currently active or not. If this value is `active`, then the Consumer Interface can begin tracking the order. If this value is `inactive`, the tracking URL is considered to be expired and the Consumer Interface should stop tracking the order."
+ type: string
+ enum:
+ - active
+ - inactive
+ Vehicle:
+ description: "Describes a vehicle is a device that is designed or used to transport people or cargo over land, water, air, or through space. This has properties like category, capacity, make, model, size,variant,color,energy_type,registration"
+ type: object
+ properties:
+ category:
+ type: string
+ capacity:
+ type: integer
+ make:
+ type: string
+ model:
+ type: string
+ size:
+ type: string
+ variant:
+ type: string
+ color:
+ type: string
+ energy_type:
+ type: string
+ registration:
+ type: string
+ wheels_count:
+ type: string
+ cargo_volumne:
+ type: string
+ wheelchair_access:
+ type: string
+ code:
+ type: string
+ emission_standard:
+ type: string
+ XInput:
+ description: "Contains any additional or extended inputs required to confirm an order. This is typically a Form Input. Sometimes, selection of catalog elements is not enough for the Provider Platform to confirm an order. For example, to confirm a flight ticket, the airline requires details of the passengers along with information on baggage, identity, in addition to the class of ticket. Similarly, a logistics company may require details on the nature of shipment in order to confirm the shipping. A recruiting firm may require additional details on the applicant in order to confirm a job application. For all such purposes, the can choose to send this object attached to any object in the catalog that is required to be sent while placing the order. This object can typically be sent at an item level or at the order level. The item level XInput will override the Order level XInput as it indicates a special requirement of information for that particular item. Hence the Consumer Interface must render a separate form for the Item and another form at the Order level before confirmation."
+ type: object
+ properties:
+ id:
+ type: string
+ head:
+ type: object
+ properties:
+ descriptor:
+ $ref: "#/components/schemas/Form"
+ index:
+ type: object
+ properties:
+ cur:
+ type: integer
+ max:
+ type: integer
+ min:
+ type: integer
+ headings:
+ type: array
+ items:
+ type: string
+ form:
+ $ref: "#/components/schemas/Form"
+ required:
+ description: Indicates whether the form data is mandatorily required by the Provider Platform to confirm the order.
+ type: boolean
+ Subscription:
+ description: Subscription details of a Network Participant.
+ allOf:
+ - $ref: '#/components/schemas/Subscriber'
+ - properties:
+ key_id:
+ description: A unique ID of the subscription entry in a registry.
+ type: string
+ format: uuid
+ signing_public_key:
+ description: The signing public key of the subscriber
+ type: string
+ encr_public_key:
+ description: The encryption public key of the subscriber
+ type: string
+ valid_from:
+ description: Date-time which the signing and encryption keys are valid from
+ type: string
+ format: date-time
+ valid_until:
+ description: Time till which the signing and encryption keys are valid
+ type: string
+ format: date-time
+ status:
+ description: Status of the subscription
+ type: string
+ enum:
+ - INITIATED
+ - UNDER_SUBSCRIPTION
+ - SUBSCRIBED
+ - EXPIRED
+ - UNSUBSCRIBED
+ - INVALID_SSL
+ created:
+ type: string
+ format: date-time
+ updated:
+ type: string
+ format: date-time
+ Subscriber:
+ description: A unique operational configuration of a trusted platform on a network.
+ type: object
+ properties:
+ subscriber_id:
+ description: 'A globally unique identifier of the platform, Typically it is the fully qualified domain name (FQDN) of the platform.'
+ type: string
+ url:
+ description: The callback URL of the Subscriber. This should necessarily contain the same domain name as set in `subscriber_id``.
+ type: string
+ format: uri
+ type:
+ description: The role of subscriber on the network
+ type: string
+ enum:
+ - BAP
+ - BPP
+ - BG
+ domain:
+ description: Operating industry domain that this subscriber offers its products or services in. A single subscriber can operate in multiple domains. Each operating domain must have a unique subscriber object entry in the req
+ allOf:
+ - description: 'Standard code representing the domain. The standard is usually published as part of the network policy. Furthermore, the network facilitator should also provide a mechanism to provide the supported domains of a network.'
+ location:
+ description: The region of operation of this subscriber
+ allOf:
+ - $ref: '#/components/schemas/Location'
+ responses:
+ CatalogResponse:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ additionalProperties: false
+ properties:
+ catalog:
+ $ref: '#/components/schemas/Catalog'
+ requestBodies:
+ CatalogRequest:
+ description: Acknowledgement of message received after successful validation of schema and signature
+ content:
+ application/json:
+ schema:
+ type: object
+ additionalProperties: false
+ properties:
+ catalog:
+ $ref: '#/components/schemas/Catalog'
diff --git a/swagger/favicon-16x16.png b/swagger/favicon-16x16.png
new file mode 100644
index 0000000..8b194e6
Binary files /dev/null and b/swagger/favicon-16x16.png differ
diff --git a/swagger/favicon-32x32.png b/swagger/favicon-32x32.png
new file mode 100644
index 0000000..249737f
Binary files /dev/null and b/swagger/favicon-32x32.png differ
diff --git a/swagger/index.css b/swagger/index.css
new file mode 100644
index 0000000..f2376fd
--- /dev/null
+++ b/swagger/index.css
@@ -0,0 +1,16 @@
+html {
+ box-sizing: border-box;
+ overflow: -moz-scrollbars-vertical;
+ overflow-y: scroll;
+}
+
+*,
+*:before,
+*:after {
+ box-sizing: inherit;
+}
+
+body {
+ margin: 0;
+ background: #fafafa;
+}
diff --git a/swagger/index.html b/swagger/index.html
new file mode 100644
index 0000000..84ae62d
--- /dev/null
+++ b/swagger/index.html
@@ -0,0 +1,19 @@
+
+
+
+
+
+ Swagger UI
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/swagger/oauth2-redirect.html b/swagger/oauth2-redirect.html
new file mode 100644
index 0000000..5640917
--- /dev/null
+++ b/swagger/oauth2-redirect.html
@@ -0,0 +1,79 @@
+
+
+
+ Swagger UI: OAuth2 Redirect
+
+
+
+
+
diff --git a/swagger/swagger-initializer.js b/swagger/swagger-initializer.js
new file mode 100644
index 0000000..23d29ee
--- /dev/null
+++ b/swagger/swagger-initializer.js
@@ -0,0 +1,20 @@
+window.onload = function() {
+ //
+
+ // the following lines will be replaced by docker/configurator, when it runs in a docker-container
+ window.ui = SwaggerUIBundle({
+ url: "../specification/specification.yaml",
+ dom_id: '#swagger-ui',
+ deepLinking: true,
+ presets: [
+ SwaggerUIBundle.presets.apis,
+ SwaggerUIStandalonePreset
+ ],
+ plugins: [
+ SwaggerUIBundle.plugins.DownloadUrl
+ ],
+ layout: "StandaloneLayout"
+ });
+
+ //
+};
diff --git a/swagger/swagger-ui-bundle.js b/swagger/swagger-ui-bundle.js
new file mode 100644
index 0000000..551e172
--- /dev/null
+++ b/swagger/swagger-ui-bundle.js
@@ -0,0 +1,2 @@
+/*! For license information please see swagger-ui-bundle.js.LICENSE.txt */
+!function webpackUniversalModuleDefinition(o,s){"object"==typeof exports&&"object"==typeof module?module.exports=s():"function"==typeof define&&define.amd?define([],s):"object"==typeof exports?exports.SwaggerUIBundle=s():o.SwaggerUIBundle=s()}(this,(()=>(()=>{var o,s,i={69119:(o,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),s.BLANK_URL=s.relativeFirstCharacters=s.whitespaceEscapeCharsRegex=s.urlSchemeRegex=s.ctrlCharactersRegex=s.htmlCtrlEntityRegex=s.htmlEntitiesRegex=s.invalidProtocolRegex=void 0,s.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im,s.htmlEntitiesRegex=/(\w+)(^\w|;)?/g,s.htmlCtrlEntityRegex=/&(newline|tab);/gi,s.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,s.urlSchemeRegex=/^.+(:|:)/gim,s.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g,s.relativeFirstCharacters=[".","/"],s.BLANK_URL="about:blank"},16750:(o,s,i)=>{"use strict";s.J=void 0;var u=i(69119);function decodeURI(o){try{return decodeURIComponent(o)}catch(s){return o}}s.J=function sanitizeUrl(o){if(!o)return u.BLANK_URL;var s,i,_=decodeURI(o);do{s=(_=decodeURI(_=(i=_,i.replace(u.ctrlCharactersRegex,"").replace(u.htmlEntitiesRegex,(function(o,s){return String.fromCharCode(s)}))).replace(u.htmlCtrlEntityRegex,"").replace(u.ctrlCharactersRegex,"").replace(u.whitespaceEscapeCharsRegex,"").trim())).match(u.ctrlCharactersRegex)||_.match(u.htmlEntitiesRegex)||_.match(u.htmlCtrlEntityRegex)||_.match(u.whitespaceEscapeCharsRegex)}while(s&&s.length>0);var w=_;if(!w)return u.BLANK_URL;if(function isRelativeUrlWithoutProtocol(o){return u.relativeFirstCharacters.indexOf(o[0])>-1}(w))return w;var x=w.match(u.urlSchemeRegex);if(!x)return w;var C=x[0];return u.invalidProtocolRegex.test(C)?u.BLANK_URL:w}},67526:(o,s)=>{"use strict";s.byteLength=function byteLength(o){var s=getLens(o),i=s[0],u=s[1];return 3*(i+u)/4-u},s.toByteArray=function toByteArray(o){var s,i,w=getLens(o),x=w[0],C=w[1],j=new _(function _byteLength(o,s,i){return 3*(s+i)/4-i}(0,x,C)),L=0,B=C>0?x-4:x;for(i=0;i>16&255,j[L++]=s>>8&255,j[L++]=255&s;2===C&&(s=u[o.charCodeAt(i)]<<2|u[o.charCodeAt(i+1)]>>4,j[L++]=255&s);1===C&&(s=u[o.charCodeAt(i)]<<10|u[o.charCodeAt(i+1)]<<4|u[o.charCodeAt(i+2)]>>2,j[L++]=s>>8&255,j[L++]=255&s);return j},s.fromByteArray=function fromByteArray(o){for(var s,u=o.length,_=u%3,w=[],x=16383,C=0,j=u-_;Cj?j:C+x));1===_?(s=o[u-1],w.push(i[s>>2]+i[s<<4&63]+"==")):2===_&&(s=(o[u-2]<<8)+o[u-1],w.push(i[s>>10]+i[s>>4&63]+i[s<<2&63]+"="));return w.join("")};for(var i=[],u=[],_="undefined"!=typeof Uint8Array?Uint8Array:Array,w="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",x=0;x<64;++x)i[x]=w[x],u[w.charCodeAt(x)]=x;function getLens(o){var s=o.length;if(s%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var i=o.indexOf("=");return-1===i&&(i=s),[i,i===s?0:4-i%4]}function encodeChunk(o,s,u){for(var _,w,x=[],C=s;C>18&63]+i[w>>12&63]+i[w>>6&63]+i[63&w]);return x.join("")}u["-".charCodeAt(0)]=62,u["_".charCodeAt(0)]=63},48287:(o,s,i)=>{"use strict";const u=i(67526),_=i(251),w="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;s.Buffer=Buffer,s.SlowBuffer=function SlowBuffer(o){+o!=o&&(o=0);return Buffer.alloc(+o)},s.INSPECT_MAX_BYTES=50;const x=2147483647;function createBuffer(o){if(o>x)throw new RangeError('The value "'+o+'" is invalid for option "size"');const s=new Uint8Array(o);return Object.setPrototypeOf(s,Buffer.prototype),s}function Buffer(o,s,i){if("number"==typeof o){if("string"==typeof s)throw new TypeError('The "string" argument must be of type string. Received type number');return allocUnsafe(o)}return from(o,s,i)}function from(o,s,i){if("string"==typeof o)return function fromString(o,s){"string"==typeof s&&""!==s||(s="utf8");if(!Buffer.isEncoding(s))throw new TypeError("Unknown encoding: "+s);const i=0|byteLength(o,s);let u=createBuffer(i);const _=u.write(o,s);_!==i&&(u=u.slice(0,_));return u}(o,s);if(ArrayBuffer.isView(o))return function fromArrayView(o){if(isInstance(o,Uint8Array)){const s=new Uint8Array(o);return fromArrayBuffer(s.buffer,s.byteOffset,s.byteLength)}return fromArrayLike(o)}(o);if(null==o)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof o);if(isInstance(o,ArrayBuffer)||o&&isInstance(o.buffer,ArrayBuffer))return fromArrayBuffer(o,s,i);if("undefined"!=typeof SharedArrayBuffer&&(isInstance(o,SharedArrayBuffer)||o&&isInstance(o.buffer,SharedArrayBuffer)))return fromArrayBuffer(o,s,i);if("number"==typeof o)throw new TypeError('The "value" argument must not be of type number. Received type number');const u=o.valueOf&&o.valueOf();if(null!=u&&u!==o)return Buffer.from(u,s,i);const _=function fromObject(o){if(Buffer.isBuffer(o)){const s=0|checked(o.length),i=createBuffer(s);return 0===i.length||o.copy(i,0,0,s),i}if(void 0!==o.length)return"number"!=typeof o.length||numberIsNaN(o.length)?createBuffer(0):fromArrayLike(o);if("Buffer"===o.type&&Array.isArray(o.data))return fromArrayLike(o.data)}(o);if(_)return _;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof o[Symbol.toPrimitive])return Buffer.from(o[Symbol.toPrimitive]("string"),s,i);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof o)}function assertSize(o){if("number"!=typeof o)throw new TypeError('"size" argument must be of type number');if(o<0)throw new RangeError('The value "'+o+'" is invalid for option "size"')}function allocUnsafe(o){return assertSize(o),createBuffer(o<0?0:0|checked(o))}function fromArrayLike(o){const s=o.length<0?0:0|checked(o.length),i=createBuffer(s);for(let u=0;u=x)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+x.toString(16)+" bytes");return 0|o}function byteLength(o,s){if(Buffer.isBuffer(o))return o.length;if(ArrayBuffer.isView(o)||isInstance(o,ArrayBuffer))return o.byteLength;if("string"!=typeof o)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof o);const i=o.length,u=arguments.length>2&&!0===arguments[2];if(!u&&0===i)return 0;let _=!1;for(;;)switch(s){case"ascii":case"latin1":case"binary":return i;case"utf8":case"utf-8":return utf8ToBytes(o).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*i;case"hex":return i>>>1;case"base64":return base64ToBytes(o).length;default:if(_)return u?-1:utf8ToBytes(o).length;s=(""+s).toLowerCase(),_=!0}}function slowToString(o,s,i){let u=!1;if((void 0===s||s<0)&&(s=0),s>this.length)return"";if((void 0===i||i>this.length)&&(i=this.length),i<=0)return"";if((i>>>=0)<=(s>>>=0))return"";for(o||(o="utf8");;)switch(o){case"hex":return hexSlice(this,s,i);case"utf8":case"utf-8":return utf8Slice(this,s,i);case"ascii":return asciiSlice(this,s,i);case"latin1":case"binary":return latin1Slice(this,s,i);case"base64":return base64Slice(this,s,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,s,i);default:if(u)throw new TypeError("Unknown encoding: "+o);o=(o+"").toLowerCase(),u=!0}}function swap(o,s,i){const u=o[s];o[s]=o[i],o[i]=u}function bidirectionalIndexOf(o,s,i,u,_){if(0===o.length)return-1;if("string"==typeof i?(u=i,i=0):i>2147483647?i=2147483647:i<-2147483648&&(i=-2147483648),numberIsNaN(i=+i)&&(i=_?0:o.length-1),i<0&&(i=o.length+i),i>=o.length){if(_)return-1;i=o.length-1}else if(i<0){if(!_)return-1;i=0}if("string"==typeof s&&(s=Buffer.from(s,u)),Buffer.isBuffer(s))return 0===s.length?-1:arrayIndexOf(o,s,i,u,_);if("number"==typeof s)return s&=255,"function"==typeof Uint8Array.prototype.indexOf?_?Uint8Array.prototype.indexOf.call(o,s,i):Uint8Array.prototype.lastIndexOf.call(o,s,i):arrayIndexOf(o,[s],i,u,_);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(o,s,i,u,_){let w,x=1,C=o.length,j=s.length;if(void 0!==u&&("ucs2"===(u=String(u).toLowerCase())||"ucs-2"===u||"utf16le"===u||"utf-16le"===u)){if(o.length<2||s.length<2)return-1;x=2,C/=2,j/=2,i/=2}function read(o,s){return 1===x?o[s]:o.readUInt16BE(s*x)}if(_){let u=-1;for(w=i;wC&&(i=C-j),w=i;w>=0;w--){let i=!0;for(let u=0;u_&&(u=_):u=_;const w=s.length;let x;for(u>w/2&&(u=w/2),x=0;x>8,_=i%256,w.push(_),w.push(u);return w}(s,o.length-i),o,i,u)}function base64Slice(o,s,i){return 0===s&&i===o.length?u.fromByteArray(o):u.fromByteArray(o.slice(s,i))}function utf8Slice(o,s,i){i=Math.min(o.length,i);const u=[];let _=s;for(;_239?4:s>223?3:s>191?2:1;if(_+x<=i){let i,u,C,j;switch(x){case 1:s<128&&(w=s);break;case 2:i=o[_+1],128==(192&i)&&(j=(31&s)<<6|63&i,j>127&&(w=j));break;case 3:i=o[_+1],u=o[_+2],128==(192&i)&&128==(192&u)&&(j=(15&s)<<12|(63&i)<<6|63&u,j>2047&&(j<55296||j>57343)&&(w=j));break;case 4:i=o[_+1],u=o[_+2],C=o[_+3],128==(192&i)&&128==(192&u)&&128==(192&C)&&(j=(15&s)<<18|(63&i)<<12|(63&u)<<6|63&C,j>65535&&j<1114112&&(w=j))}}null===w?(w=65533,x=1):w>65535&&(w-=65536,u.push(w>>>10&1023|55296),w=56320|1023&w),u.push(w),_+=x}return function decodeCodePointsArray(o){const s=o.length;if(s<=C)return String.fromCharCode.apply(String,o);let i="",u=0;for(;uu.length?(Buffer.isBuffer(s)||(s=Buffer.from(s)),s.copy(u,_)):Uint8Array.prototype.set.call(u,s,_);else{if(!Buffer.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(u,_)}_+=s.length}return u},Buffer.byteLength=byteLength,Buffer.prototype._isBuffer=!0,Buffer.prototype.swap16=function swap16(){const o=this.length;if(o%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let s=0;si&&(o+=" ... "),""},w&&(Buffer.prototype[w]=Buffer.prototype.inspect),Buffer.prototype.compare=function compare(o,s,i,u,_){if(isInstance(o,Uint8Array)&&(o=Buffer.from(o,o.offset,o.byteLength)),!Buffer.isBuffer(o))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof o);if(void 0===s&&(s=0),void 0===i&&(i=o?o.length:0),void 0===u&&(u=0),void 0===_&&(_=this.length),s<0||i>o.length||u<0||_>this.length)throw new RangeError("out of range index");if(u>=_&&s>=i)return 0;if(u>=_)return-1;if(s>=i)return 1;if(this===o)return 0;let w=(_>>>=0)-(u>>>=0),x=(i>>>=0)-(s>>>=0);const C=Math.min(w,x),j=this.slice(u,_),L=o.slice(s,i);for(let o=0;o>>=0,isFinite(i)?(i>>>=0,void 0===u&&(u="utf8")):(u=i,i=void 0)}const _=this.length-s;if((void 0===i||i>_)&&(i=_),o.length>0&&(i<0||s<0)||s>this.length)throw new RangeError("Attempt to write outside buffer bounds");u||(u="utf8");let w=!1;for(;;)switch(u){case"hex":return hexWrite(this,o,s,i);case"utf8":case"utf-8":return utf8Write(this,o,s,i);case"ascii":case"latin1":case"binary":return asciiWrite(this,o,s,i);case"base64":return base64Write(this,o,s,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,o,s,i);default:if(w)throw new TypeError("Unknown encoding: "+u);u=(""+u).toLowerCase(),w=!0}},Buffer.prototype.toJSON=function toJSON(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const C=4096;function asciiSlice(o,s,i){let u="";i=Math.min(o.length,i);for(let _=s;_u)&&(i=u);let _="";for(let u=s;ui)throw new RangeError("Trying to access beyond buffer length")}function checkInt(o,s,i,u,_,w){if(!Buffer.isBuffer(o))throw new TypeError('"buffer" argument must be a Buffer instance');if(s>_||so.length)throw new RangeError("Index out of range")}function wrtBigUInt64LE(o,s,i,u,_){checkIntBI(s,u,_,o,i,7);let w=Number(s&BigInt(4294967295));o[i++]=w,w>>=8,o[i++]=w,w>>=8,o[i++]=w,w>>=8,o[i++]=w;let x=Number(s>>BigInt(32)&BigInt(4294967295));return o[i++]=x,x>>=8,o[i++]=x,x>>=8,o[i++]=x,x>>=8,o[i++]=x,i}function wrtBigUInt64BE(o,s,i,u,_){checkIntBI(s,u,_,o,i,7);let w=Number(s&BigInt(4294967295));o[i+7]=w,w>>=8,o[i+6]=w,w>>=8,o[i+5]=w,w>>=8,o[i+4]=w;let x=Number(s>>BigInt(32)&BigInt(4294967295));return o[i+3]=x,x>>=8,o[i+2]=x,x>>=8,o[i+1]=x,x>>=8,o[i]=x,i+8}function checkIEEE754(o,s,i,u,_,w){if(i+u>o.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("Index out of range")}function writeFloat(o,s,i,u,w){return s=+s,i>>>=0,w||checkIEEE754(o,0,i,4),_.write(o,s,i,u,23,4),i+4}function writeDouble(o,s,i,u,w){return s=+s,i>>>=0,w||checkIEEE754(o,0,i,8),_.write(o,s,i,u,52,8),i+8}Buffer.prototype.slice=function slice(o,s){const i=this.length;(o=~~o)<0?(o+=i)<0&&(o=0):o>i&&(o=i),(s=void 0===s?i:~~s)<0?(s+=i)<0&&(s=0):s>i&&(s=i),s>>=0,s>>>=0,i||checkOffset(o,s,this.length);let u=this[o],_=1,w=0;for(;++w>>=0,s>>>=0,i||checkOffset(o,s,this.length);let u=this[o+--s],_=1;for(;s>0&&(_*=256);)u+=this[o+--s]*_;return u},Buffer.prototype.readUint8=Buffer.prototype.readUInt8=function readUInt8(o,s){return o>>>=0,s||checkOffset(o,1,this.length),this[o]},Buffer.prototype.readUint16LE=Buffer.prototype.readUInt16LE=function readUInt16LE(o,s){return o>>>=0,s||checkOffset(o,2,this.length),this[o]|this[o+1]<<8},Buffer.prototype.readUint16BE=Buffer.prototype.readUInt16BE=function readUInt16BE(o,s){return o>>>=0,s||checkOffset(o,2,this.length),this[o]<<8|this[o+1]},Buffer.prototype.readUint32LE=Buffer.prototype.readUInt32LE=function readUInt32LE(o,s){return o>>>=0,s||checkOffset(o,4,this.length),(this[o]|this[o+1]<<8|this[o+2]<<16)+16777216*this[o+3]},Buffer.prototype.readUint32BE=Buffer.prototype.readUInt32BE=function readUInt32BE(o,s){return o>>>=0,s||checkOffset(o,4,this.length),16777216*this[o]+(this[o+1]<<16|this[o+2]<<8|this[o+3])},Buffer.prototype.readBigUInt64LE=defineBigIntMethod((function readBigUInt64LE(o){validateNumber(o>>>=0,"offset");const s=this[o],i=this[o+7];void 0!==s&&void 0!==i||boundsError(o,this.length-8);const u=s+256*this[++o]+65536*this[++o]+this[++o]*2**24,_=this[++o]+256*this[++o]+65536*this[++o]+i*2**24;return BigInt(u)+(BigInt(_)<>>=0,"offset");const s=this[o],i=this[o+7];void 0!==s&&void 0!==i||boundsError(o,this.length-8);const u=s*2**24+65536*this[++o]+256*this[++o]+this[++o],_=this[++o]*2**24+65536*this[++o]+256*this[++o]+i;return(BigInt(u)<>>=0,s>>>=0,i||checkOffset(o,s,this.length);let u=this[o],_=1,w=0;for(;++w=_&&(u-=Math.pow(2,8*s)),u},Buffer.prototype.readIntBE=function readIntBE(o,s,i){o>>>=0,s>>>=0,i||checkOffset(o,s,this.length);let u=s,_=1,w=this[o+--u];for(;u>0&&(_*=256);)w+=this[o+--u]*_;return _*=128,w>=_&&(w-=Math.pow(2,8*s)),w},Buffer.prototype.readInt8=function readInt8(o,s){return o>>>=0,s||checkOffset(o,1,this.length),128&this[o]?-1*(255-this[o]+1):this[o]},Buffer.prototype.readInt16LE=function readInt16LE(o,s){o>>>=0,s||checkOffset(o,2,this.length);const i=this[o]|this[o+1]<<8;return 32768&i?4294901760|i:i},Buffer.prototype.readInt16BE=function readInt16BE(o,s){o>>>=0,s||checkOffset(o,2,this.length);const i=this[o+1]|this[o]<<8;return 32768&i?4294901760|i:i},Buffer.prototype.readInt32LE=function readInt32LE(o,s){return o>>>=0,s||checkOffset(o,4,this.length),this[o]|this[o+1]<<8|this[o+2]<<16|this[o+3]<<24},Buffer.prototype.readInt32BE=function readInt32BE(o,s){return o>>>=0,s||checkOffset(o,4,this.length),this[o]<<24|this[o+1]<<16|this[o+2]<<8|this[o+3]},Buffer.prototype.readBigInt64LE=defineBigIntMethod((function readBigInt64LE(o){validateNumber(o>>>=0,"offset");const s=this[o],i=this[o+7];void 0!==s&&void 0!==i||boundsError(o,this.length-8);const u=this[o+4]+256*this[o+5]+65536*this[o+6]+(i<<24);return(BigInt(u)<>>=0,"offset");const s=this[o],i=this[o+7];void 0!==s&&void 0!==i||boundsError(o,this.length-8);const u=(s<<24)+65536*this[++o]+256*this[++o]+this[++o];return(BigInt(u)<>>=0,s||checkOffset(o,4,this.length),_.read(this,o,!0,23,4)},Buffer.prototype.readFloatBE=function readFloatBE(o,s){return o>>>=0,s||checkOffset(o,4,this.length),_.read(this,o,!1,23,4)},Buffer.prototype.readDoubleLE=function readDoubleLE(o,s){return o>>>=0,s||checkOffset(o,8,this.length),_.read(this,o,!0,52,8)},Buffer.prototype.readDoubleBE=function readDoubleBE(o,s){return o>>>=0,s||checkOffset(o,8,this.length),_.read(this,o,!1,52,8)},Buffer.prototype.writeUintLE=Buffer.prototype.writeUIntLE=function writeUIntLE(o,s,i,u){if(o=+o,s>>>=0,i>>>=0,!u){checkInt(this,o,s,i,Math.pow(2,8*i)-1,0)}let _=1,w=0;for(this[s]=255&o;++w>>=0,i>>>=0,!u){checkInt(this,o,s,i,Math.pow(2,8*i)-1,0)}let _=i-1,w=1;for(this[s+_]=255&o;--_>=0&&(w*=256);)this[s+_]=o/w&255;return s+i},Buffer.prototype.writeUint8=Buffer.prototype.writeUInt8=function writeUInt8(o,s,i){return o=+o,s>>>=0,i||checkInt(this,o,s,1,255,0),this[s]=255&o,s+1},Buffer.prototype.writeUint16LE=Buffer.prototype.writeUInt16LE=function writeUInt16LE(o,s,i){return o=+o,s>>>=0,i||checkInt(this,o,s,2,65535,0),this[s]=255&o,this[s+1]=o>>>8,s+2},Buffer.prototype.writeUint16BE=Buffer.prototype.writeUInt16BE=function writeUInt16BE(o,s,i){return o=+o,s>>>=0,i||checkInt(this,o,s,2,65535,0),this[s]=o>>>8,this[s+1]=255&o,s+2},Buffer.prototype.writeUint32LE=Buffer.prototype.writeUInt32LE=function writeUInt32LE(o,s,i){return o=+o,s>>>=0,i||checkInt(this,o,s,4,4294967295,0),this[s+3]=o>>>24,this[s+2]=o>>>16,this[s+1]=o>>>8,this[s]=255&o,s+4},Buffer.prototype.writeUint32BE=Buffer.prototype.writeUInt32BE=function writeUInt32BE(o,s,i){return o=+o,s>>>=0,i||checkInt(this,o,s,4,4294967295,0),this[s]=o>>>24,this[s+1]=o>>>16,this[s+2]=o>>>8,this[s+3]=255&o,s+4},Buffer.prototype.writeBigUInt64LE=defineBigIntMethod((function writeBigUInt64LE(o,s=0){return wrtBigUInt64LE(this,o,s,BigInt(0),BigInt("0xffffffffffffffff"))})),Buffer.prototype.writeBigUInt64BE=defineBigIntMethod((function writeBigUInt64BE(o,s=0){return wrtBigUInt64BE(this,o,s,BigInt(0),BigInt("0xffffffffffffffff"))})),Buffer.prototype.writeIntLE=function writeIntLE(o,s,i,u){if(o=+o,s>>>=0,!u){const u=Math.pow(2,8*i-1);checkInt(this,o,s,i,u-1,-u)}let _=0,w=1,x=0;for(this[s]=255&o;++_>>=0,!u){const u=Math.pow(2,8*i-1);checkInt(this,o,s,i,u-1,-u)}let _=i-1,w=1,x=0;for(this[s+_]=255&o;--_>=0&&(w*=256);)o<0&&0===x&&0!==this[s+_+1]&&(x=1),this[s+_]=(o/w|0)-x&255;return s+i},Buffer.prototype.writeInt8=function writeInt8(o,s,i){return o=+o,s>>>=0,i||checkInt(this,o,s,1,127,-128),o<0&&(o=255+o+1),this[s]=255&o,s+1},Buffer.prototype.writeInt16LE=function writeInt16LE(o,s,i){return o=+o,s>>>=0,i||checkInt(this,o,s,2,32767,-32768),this[s]=255&o,this[s+1]=o>>>8,s+2},Buffer.prototype.writeInt16BE=function writeInt16BE(o,s,i){return o=+o,s>>>=0,i||checkInt(this,o,s,2,32767,-32768),this[s]=o>>>8,this[s+1]=255&o,s+2},Buffer.prototype.writeInt32LE=function writeInt32LE(o,s,i){return o=+o,s>>>=0,i||checkInt(this,o,s,4,2147483647,-2147483648),this[s]=255&o,this[s+1]=o>>>8,this[s+2]=o>>>16,this[s+3]=o>>>24,s+4},Buffer.prototype.writeInt32BE=function writeInt32BE(o,s,i){return o=+o,s>>>=0,i||checkInt(this,o,s,4,2147483647,-2147483648),o<0&&(o=4294967295+o+1),this[s]=o>>>24,this[s+1]=o>>>16,this[s+2]=o>>>8,this[s+3]=255&o,s+4},Buffer.prototype.writeBigInt64LE=defineBigIntMethod((function writeBigInt64LE(o,s=0){return wrtBigUInt64LE(this,o,s,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),Buffer.prototype.writeBigInt64BE=defineBigIntMethod((function writeBigInt64BE(o,s=0){return wrtBigUInt64BE(this,o,s,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),Buffer.prototype.writeFloatLE=function writeFloatLE(o,s,i){return writeFloat(this,o,s,!0,i)},Buffer.prototype.writeFloatBE=function writeFloatBE(o,s,i){return writeFloat(this,o,s,!1,i)},Buffer.prototype.writeDoubleLE=function writeDoubleLE(o,s,i){return writeDouble(this,o,s,!0,i)},Buffer.prototype.writeDoubleBE=function writeDoubleBE(o,s,i){return writeDouble(this,o,s,!1,i)},Buffer.prototype.copy=function copy(o,s,i,u){if(!Buffer.isBuffer(o))throw new TypeError("argument should be a Buffer");if(i||(i=0),u||0===u||(u=this.length),s>=o.length&&(s=o.length),s||(s=0),u>0&&u=this.length)throw new RangeError("Index out of range");if(u<0)throw new RangeError("sourceEnd out of bounds");u>this.length&&(u=this.length),o.length-s>>=0,i=void 0===i?this.length:i>>>0,o||(o=0),"number"==typeof o)for(_=s;_=u+4;i-=3)s=`_${o.slice(i-3,i)}${s}`;return`${o.slice(0,i)}${s}`}function checkIntBI(o,s,i,u,_,w){if(o>i||o3?0===s||s===BigInt(0)?`>= 0${u} and < 2${u} ** ${8*(w+1)}${u}`:`>= -(2${u} ** ${8*(w+1)-1}${u}) and < 2 ** ${8*(w+1)-1}${u}`:`>= ${s}${u} and <= ${i}${u}`,new j.ERR_OUT_OF_RANGE("value",_,o)}!function checkBounds(o,s,i){validateNumber(s,"offset"),void 0!==o[s]&&void 0!==o[s+i]||boundsError(s,o.length-(i+1))}(u,_,w)}function validateNumber(o,s){if("number"!=typeof o)throw new j.ERR_INVALID_ARG_TYPE(s,"number",o)}function boundsError(o,s,i){if(Math.floor(o)!==o)throw validateNumber(o,i),new j.ERR_OUT_OF_RANGE(i||"offset","an integer",o);if(s<0)throw new j.ERR_BUFFER_OUT_OF_BOUNDS;throw new j.ERR_OUT_OF_RANGE(i||"offset",`>= ${i?1:0} and <= ${s}`,o)}E("ERR_BUFFER_OUT_OF_BOUNDS",(function(o){return o?`${o} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),E("ERR_INVALID_ARG_TYPE",(function(o,s){return`The "${o}" argument must be of type number. Received type ${typeof s}`}),TypeError),E("ERR_OUT_OF_RANGE",(function(o,s,i){let u=`The value of "${o}" is out of range.`,_=i;return Number.isInteger(i)&&Math.abs(i)>2**32?_=addNumericalSeparator(String(i)):"bigint"==typeof i&&(_=String(i),(i>BigInt(2)**BigInt(32)||i<-(BigInt(2)**BigInt(32)))&&(_=addNumericalSeparator(_)),_+="n"),u+=` It must be ${s}. Received ${_}`,u}),RangeError);const L=/[^+/0-9A-Za-z-_]/g;function utf8ToBytes(o,s){let i;s=s||1/0;const u=o.length;let _=null;const w=[];for(let x=0;x55295&&i<57344){if(!_){if(i>56319){(s-=3)>-1&&w.push(239,191,189);continue}if(x+1===u){(s-=3)>-1&&w.push(239,191,189);continue}_=i;continue}if(i<56320){(s-=3)>-1&&w.push(239,191,189),_=i;continue}i=65536+(_-55296<<10|i-56320)}else _&&(s-=3)>-1&&w.push(239,191,189);if(_=null,i<128){if((s-=1)<0)break;w.push(i)}else if(i<2048){if((s-=2)<0)break;w.push(i>>6|192,63&i|128)}else if(i<65536){if((s-=3)<0)break;w.push(i>>12|224,i>>6&63|128,63&i|128)}else{if(!(i<1114112))throw new Error("Invalid code point");if((s-=4)<0)break;w.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}}return w}function base64ToBytes(o){return u.toByteArray(function base64clean(o){if((o=(o=o.split("=")[0]).trim().replace(L,"")).length<2)return"";for(;o.length%4!=0;)o+="=";return o}(o))}function blitBuffer(o,s,i,u){let _;for(_=0;_=s.length||_>=o.length);++_)s[_+i]=o[_];return _}function isInstance(o,s){return o instanceof s||null!=o&&null!=o.constructor&&null!=o.constructor.name&&o.constructor.name===s.name}function numberIsNaN(o){return o!=o}const B=function(){const o="0123456789abcdef",s=new Array(256);for(let i=0;i<16;++i){const u=16*i;for(let _=0;_<16;++_)s[u+_]=o[i]+o[_]}return s}();function defineBigIntMethod(o){return"undefined"==typeof BigInt?BufferBigIntNotDefined:o}function BufferBigIntNotDefined(){throw new Error("BigInt not supported")}},38075:(o,s,i)=>{"use strict";var u=i(70453),_=i(10487),w=_(u("String.prototype.indexOf"));o.exports=function callBoundIntrinsic(o,s){var i=u(o,!!s);return"function"==typeof i&&w(o,".prototype.")>-1?_(i):i}},10487:(o,s,i)=>{"use strict";var u=i(66743),_=i(70453),w=i(96897),x=i(69675),C=_("%Function.prototype.apply%"),j=_("%Function.prototype.call%"),L=_("%Reflect.apply%",!0)||u.call(j,C),B=i(30655),$=_("%Math.max%");o.exports=function callBind(o){if("function"!=typeof o)throw new x("a function is required");var s=L(u,j,arguments);return w(s,1+$(0,o.length-(arguments.length-1)),!0)};var V=function applyBind(){return L(u,C,arguments)};B?B(o.exports,"apply",{value:V}):o.exports.apply=V},57427:(o,s)=>{"use strict";s.parse=function parse(o,s){if("string"!=typeof o)throw new TypeError("argument str must be a string");var i={},u=(s||{}).decode||decode,_=0;for(;_{"use strict";var u=i(16426),_={"text/plain":"Text","text/html":"Url",default:"Text"};o.exports=function copy(o,s){var i,w,x,C,j,L,B=!1;s||(s={}),i=s.debug||!1;try{if(x=u(),C=document.createRange(),j=document.getSelection(),(L=document.createElement("span")).textContent=o,L.ariaHidden="true",L.style.all="unset",L.style.position="fixed",L.style.top=0,L.style.clip="rect(0, 0, 0, 0)",L.style.whiteSpace="pre",L.style.webkitUserSelect="text",L.style.MozUserSelect="text",L.style.msUserSelect="text",L.style.userSelect="text",L.addEventListener("copy",(function(u){if(u.stopPropagation(),s.format)if(u.preventDefault(),void 0===u.clipboardData){i&&console.warn("unable to use e.clipboardData"),i&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var w=_[s.format]||_.default;window.clipboardData.setData(w,o)}else u.clipboardData.clearData(),u.clipboardData.setData(s.format,o);s.onCopy&&(u.preventDefault(),s.onCopy(u.clipboardData))})),document.body.appendChild(L),C.selectNodeContents(L),j.addRange(C),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");B=!0}catch(u){i&&console.error("unable to copy using execCommand: ",u),i&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(s.format||"text",o),s.onCopy&&s.onCopy(window.clipboardData),B=!0}catch(u){i&&console.error("unable to copy using clipboardData: ",u),i&&console.error("falling back to prompt"),w=function format(o){var s=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return o.replace(/#{\s*key\s*}/g,s)}("message"in s?s.message:"Copy to clipboard: #{key}, Enter"),window.prompt(w,o)}}finally{j&&("function"==typeof j.removeRange?j.removeRange(C):j.removeAllRanges()),L&&document.body.removeChild(L),x()}return B}},2205:function(o,s,i){var u;u=void 0!==i.g?i.g:this,o.exports=function(o){if(o.CSS&&o.CSS.escape)return o.CSS.escape;var cssEscape=function(o){if(0==arguments.length)throw new TypeError("`CSS.escape` requires an argument.");for(var s,i=String(o),u=i.length,_=-1,w="",x=i.charCodeAt(0);++_=1&&s<=31||127==s||0==_&&s>=48&&s<=57||1==_&&s>=48&&s<=57&&45==x?"\\"+s.toString(16)+" ":0==_&&1==u&&45==s||!(s>=128||45==s||95==s||s>=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122)?"\\"+i.charAt(_):i.charAt(_):w+="�";return w};return o.CSS||(o.CSS={}),o.CSS.escape=cssEscape,cssEscape}(u)},81919:(o,s,i)=>{"use strict";var u=i(48287).Buffer;function isSpecificValue(o){return o instanceof u||o instanceof Date||o instanceof RegExp}function cloneSpecificValue(o){if(o instanceof u){var s=u.alloc?u.alloc(o.length):new u(o.length);return o.copy(s),s}if(o instanceof Date)return new Date(o.getTime());if(o instanceof RegExp)return new RegExp(o);throw new Error("Unexpected situation")}function deepCloneArray(o){var s=[];return o.forEach((function(o,i){"object"==typeof o&&null!==o?Array.isArray(o)?s[i]=deepCloneArray(o):isSpecificValue(o)?s[i]=cloneSpecificValue(o):s[i]=_({},o):s[i]=o})),s}function safeGetProperty(o,s){return"__proto__"===s?void 0:o[s]}var _=o.exports=function(){if(arguments.length<1||"object"!=typeof arguments[0])return!1;if(arguments.length<2)return arguments[0];var o,s,i=arguments[0];return Array.prototype.slice.call(arguments,1).forEach((function(u){"object"!=typeof u||null===u||Array.isArray(u)||Object.keys(u).forEach((function(w){return s=safeGetProperty(i,w),(o=safeGetProperty(u,w))===i?void 0:"object"!=typeof o||null===o?void(i[w]=o):Array.isArray(o)?void(i[w]=deepCloneArray(o)):isSpecificValue(o)?void(i[w]=cloneSpecificValue(o)):"object"!=typeof s||null===s||Array.isArray(s)?void(i[w]=_({},o)):void(i[w]=_(s,o))}))})),i}},14744:o=>{"use strict";var s=function isMergeableObject(o){return function isNonNullObject(o){return!!o&&"object"==typeof o}(o)&&!function isSpecial(o){var s=Object.prototype.toString.call(o);return"[object RegExp]"===s||"[object Date]"===s||function isReactElement(o){return o.$$typeof===i}(o)}(o)};var i="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function cloneUnlessOtherwiseSpecified(o,s){return!1!==s.clone&&s.isMergeableObject(o)?deepmerge(function emptyTarget(o){return Array.isArray(o)?[]:{}}(o),o,s):o}function defaultArrayMerge(o,s,i){return o.concat(s).map((function(o){return cloneUnlessOtherwiseSpecified(o,i)}))}function getKeys(o){return Object.keys(o).concat(function getEnumerableOwnPropertySymbols(o){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(o).filter((function(s){return Object.propertyIsEnumerable.call(o,s)})):[]}(o))}function propertyIsOnObject(o,s){try{return s in o}catch(o){return!1}}function mergeObject(o,s,i){var u={};return i.isMergeableObject(o)&&getKeys(o).forEach((function(s){u[s]=cloneUnlessOtherwiseSpecified(o[s],i)})),getKeys(s).forEach((function(_){(function propertyIsUnsafe(o,s){return propertyIsOnObject(o,s)&&!(Object.hasOwnProperty.call(o,s)&&Object.propertyIsEnumerable.call(o,s))})(o,_)||(propertyIsOnObject(o,_)&&i.isMergeableObject(s[_])?u[_]=function getMergeFunction(o,s){if(!s.customMerge)return deepmerge;var i=s.customMerge(o);return"function"==typeof i?i:deepmerge}(_,i)(o[_],s[_],i):u[_]=cloneUnlessOtherwiseSpecified(s[_],i))})),u}function deepmerge(o,i,u){(u=u||{}).arrayMerge=u.arrayMerge||defaultArrayMerge,u.isMergeableObject=u.isMergeableObject||s,u.cloneUnlessOtherwiseSpecified=cloneUnlessOtherwiseSpecified;var _=Array.isArray(i);return _===Array.isArray(o)?_?u.arrayMerge(o,i,u):mergeObject(o,i,u):cloneUnlessOtherwiseSpecified(i,u)}deepmerge.all=function deepmergeAll(o,s){if(!Array.isArray(o))throw new Error("first argument should be an array");return o.reduce((function(o,i){return deepmerge(o,i,s)}),{})};var u=deepmerge;o.exports=u},30041:(o,s,i)=>{"use strict";var u=i(30655),_=i(58068),w=i(69675),x=i(75795);o.exports=function defineDataProperty(o,s,i){if(!o||"object"!=typeof o&&"function"!=typeof o)throw new w("`obj` must be an object or a function`");if("string"!=typeof s&&"symbol"!=typeof s)throw new w("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new w("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new w("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new w("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new w("`loose`, if provided, must be a boolean");var C=arguments.length>3?arguments[3]:null,j=arguments.length>4?arguments[4]:null,L=arguments.length>5?arguments[5]:null,B=arguments.length>6&&arguments[6],$=!!x&&x(o,s);if(u)u(o,s,{configurable:null===L&&$?$.configurable:!L,enumerable:null===C&&$?$.enumerable:!C,value:i,writable:null===j&&$?$.writable:!j});else{if(!B&&(C||j||L))throw new _("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");o[s]=i}}},42838:function(o){o.exports=function(){"use strict";const{entries:o,setPrototypeOf:s,isFrozen:i,getPrototypeOf:u,getOwnPropertyDescriptor:_}=Object;let{freeze:w,seal:x,create:C}=Object,{apply:j,construct:L}="undefined"!=typeof Reflect&&Reflect;w||(w=function freeze(o){return o}),x||(x=function seal(o){return o}),j||(j=function apply(o,s,i){return o.apply(s,i)}),L||(L=function construct(o,s){return new o(...s)});const B=unapply(Array.prototype.forEach),$=unapply(Array.prototype.pop),V=unapply(Array.prototype.push),U=unapply(String.prototype.toLowerCase),z=unapply(String.prototype.toString),Y=unapply(String.prototype.match),Z=unapply(String.prototype.replace),ee=unapply(String.prototype.indexOf),ie=unapply(String.prototype.trim),ae=unapply(Object.prototype.hasOwnProperty),ce=unapply(RegExp.prototype.test),le=unconstruct(TypeError);function numberIsNaN(o){return"number"==typeof o&&isNaN(o)}function unapply(o){return function(s){for(var i=arguments.length,u=new Array(i>1?i-1:0),_=1;_2&&void 0!==arguments[2]?arguments[2]:U;s&&s(o,null);let w=u.length;for(;w--;){let s=u[w];if("string"==typeof s){const o=_(s);o!==s&&(i(u)||(u[w]=o),s=o)}o[s]=!0}return o}function cleanArray(o){for(let s=0;s/gm),$e=x(/\${[\w\W]*}/gm),ze=x(/^data-[\-\w.\u00B7-\uFFFF]/),We=x(/^aria-[\-\w]+$/),He=x(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Ye=x(/^(?:\w+script|data):/i),Xe=x(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Qe=x(/^html$/i),et=x(/^[a-z][.\w]*(-[.\w]+)+$/i);var tt=Object.freeze({__proto__:null,MUSTACHE_EXPR:Re,ERB_EXPR:qe,TMPLIT_EXPR:$e,DATA_ATTR:ze,ARIA_ATTR:We,IS_ALLOWED_URI:He,IS_SCRIPT_OR_DATA:Ye,ATTR_WHITESPACE:Xe,DOCTYPE_NAME:Qe,CUSTOM_ELEMENT:et});const rt={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},nt=function getGlobal(){return"undefined"==typeof window?null:window},ot=function _createTrustedTypesPolicy(o,s){if("object"!=typeof o||"function"!=typeof o.createPolicy)return null;let i=null;const u="data-tt-policy-suffix";s&&s.hasAttribute(u)&&(i=s.getAttribute(u));const _="dompurify"+(i?"#"+i:"");try{return o.createPolicy(_,{createHTML:o=>o,createScriptURL:o=>o})}catch(o){return console.warn("TrustedTypes policy "+_+" could not be created."),null}};function createDOMPurify(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:nt();const DOMPurify=o=>createDOMPurify(o);if(DOMPurify.version="3.1.4",DOMPurify.removed=[],!s||!s.document||s.document.nodeType!==rt.document)return DOMPurify.isSupported=!1,DOMPurify;let{document:i}=s;const u=i,_=u.currentScript,{DocumentFragment:x,HTMLTemplateElement:j,Node:L,Element:Re,NodeFilter:qe,NamedNodeMap:$e=s.NamedNodeMap||s.MozNamedAttrMap,HTMLFormElement:ze,DOMParser:We,trustedTypes:Ye}=s,Xe=Re.prototype,et=lookupGetter(Xe,"cloneNode"),st=lookupGetter(Xe,"nextSibling"),it=lookupGetter(Xe,"childNodes"),at=lookupGetter(Xe,"parentNode");if("function"==typeof j){const o=i.createElement("template");o.content&&o.content.ownerDocument&&(i=o.content.ownerDocument)}let ct,lt="";const{implementation:ut,createNodeIterator:pt,createDocumentFragment:ht,getElementsByTagName:dt}=i,{importNode:mt}=u;let gt={};DOMPurify.isSupported="function"==typeof o&&"function"==typeof at&&ut&&void 0!==ut.createHTMLDocument;const{MUSTACHE_EXPR:yt,ERB_EXPR:vt,TMPLIT_EXPR:bt,DATA_ATTR:_t,ARIA_ATTR:Et,IS_SCRIPT_OR_DATA:wt,ATTR_WHITESPACE:St,CUSTOM_ELEMENT:xt}=tt;let{IS_ALLOWED_URI:kt}=tt,Ot=null;const Ct=addToSet({},[...pe,...de,...fe,...be,...we]);let At=null;const jt=addToSet({},[...Se,...xe,...Pe,...Te]);let Pt=Object.seal(C(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),It=null,Mt=null,Nt=!0,Tt=!0,Rt=!1,Dt=!0,Lt=!1,Bt=!0,Ft=!1,qt=!1,$t=!1,Vt=!1,Ut=!1,zt=!1,Wt=!0,Kt=!1;const Ht="user-content-";let Jt=!0,Gt=!1,Yt={},Xt=null;const Qt=addToSet({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Zt=null;const er=addToSet({},["audio","video","img","source","image","track"]);let tr=null;const rr=addToSet({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),nr="http://www.w3.org/1998/Math/MathML",sr="http://www.w3.org/2000/svg",ir="http://www.w3.org/1999/xhtml";let ar=ir,cr=!1,lr=null;const ur=addToSet({},[nr,sr,ir],z);let pr=null;const dr=["application/xhtml+xml","text/html"],fr="text/html";let mr=null,gr=null;const yr=255,vr=i.createElement("form"),br=function isRegexOrFunction(o){return o instanceof RegExp||o instanceof Function},_r=function _parseConfig(){let o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!gr||gr!==o){if(o&&"object"==typeof o||(o={}),o=clone(o),pr=-1===dr.indexOf(o.PARSER_MEDIA_TYPE)?fr:o.PARSER_MEDIA_TYPE,mr="application/xhtml+xml"===pr?z:U,Ot=ae(o,"ALLOWED_TAGS")?addToSet({},o.ALLOWED_TAGS,mr):Ct,At=ae(o,"ALLOWED_ATTR")?addToSet({},o.ALLOWED_ATTR,mr):jt,lr=ae(o,"ALLOWED_NAMESPACES")?addToSet({},o.ALLOWED_NAMESPACES,z):ur,tr=ae(o,"ADD_URI_SAFE_ATTR")?addToSet(clone(rr),o.ADD_URI_SAFE_ATTR,mr):rr,Zt=ae(o,"ADD_DATA_URI_TAGS")?addToSet(clone(er),o.ADD_DATA_URI_TAGS,mr):er,Xt=ae(o,"FORBID_CONTENTS")?addToSet({},o.FORBID_CONTENTS,mr):Qt,It=ae(o,"FORBID_TAGS")?addToSet({},o.FORBID_TAGS,mr):{},Mt=ae(o,"FORBID_ATTR")?addToSet({},o.FORBID_ATTR,mr):{},Yt=!!ae(o,"USE_PROFILES")&&o.USE_PROFILES,Nt=!1!==o.ALLOW_ARIA_ATTR,Tt=!1!==o.ALLOW_DATA_ATTR,Rt=o.ALLOW_UNKNOWN_PROTOCOLS||!1,Dt=!1!==o.ALLOW_SELF_CLOSE_IN_ATTR,Lt=o.SAFE_FOR_TEMPLATES||!1,Bt=!1!==o.SAFE_FOR_XML,Ft=o.WHOLE_DOCUMENT||!1,Vt=o.RETURN_DOM||!1,Ut=o.RETURN_DOM_FRAGMENT||!1,zt=o.RETURN_TRUSTED_TYPE||!1,$t=o.FORCE_BODY||!1,Wt=!1!==o.SANITIZE_DOM,Kt=o.SANITIZE_NAMED_PROPS||!1,Jt=!1!==o.KEEP_CONTENT,Gt=o.IN_PLACE||!1,kt=o.ALLOWED_URI_REGEXP||He,ar=o.NAMESPACE||ir,Pt=o.CUSTOM_ELEMENT_HANDLING||{},o.CUSTOM_ELEMENT_HANDLING&&br(o.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Pt.tagNameCheck=o.CUSTOM_ELEMENT_HANDLING.tagNameCheck),o.CUSTOM_ELEMENT_HANDLING&&br(o.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Pt.attributeNameCheck=o.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),o.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof o.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Pt.allowCustomizedBuiltInElements=o.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Lt&&(Tt=!1),Ut&&(Vt=!0),Yt&&(Ot=addToSet({},we),At=[],!0===Yt.html&&(addToSet(Ot,pe),addToSet(At,Se)),!0===Yt.svg&&(addToSet(Ot,de),addToSet(At,xe),addToSet(At,Te)),!0===Yt.svgFilters&&(addToSet(Ot,fe),addToSet(At,xe),addToSet(At,Te)),!0===Yt.mathMl&&(addToSet(Ot,be),addToSet(At,Pe),addToSet(At,Te))),o.ADD_TAGS&&(Ot===Ct&&(Ot=clone(Ot)),addToSet(Ot,o.ADD_TAGS,mr)),o.ADD_ATTR&&(At===jt&&(At=clone(At)),addToSet(At,o.ADD_ATTR,mr)),o.ADD_URI_SAFE_ATTR&&addToSet(tr,o.ADD_URI_SAFE_ATTR,mr),o.FORBID_CONTENTS&&(Xt===Qt&&(Xt=clone(Xt)),addToSet(Xt,o.FORBID_CONTENTS,mr)),Jt&&(Ot["#text"]=!0),Ft&&addToSet(Ot,["html","head","body"]),Ot.table&&(addToSet(Ot,["tbody"]),delete It.tbody),o.TRUSTED_TYPES_POLICY){if("function"!=typeof o.TRUSTED_TYPES_POLICY.createHTML)throw le('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof o.TRUSTED_TYPES_POLICY.createScriptURL)throw le('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');ct=o.TRUSTED_TYPES_POLICY,lt=ct.createHTML("")}else void 0===ct&&(ct=ot(Ye,_)),null!==ct&&"string"==typeof lt&&(lt=ct.createHTML(""));w&&w(o),gr=o}},Er=addToSet({},["mi","mo","mn","ms","mtext"]),wr=addToSet({},["foreignobject","annotation-xml"]),Sr=addToSet({},["title","style","font","a","script"]),xr=addToSet({},[...de,...fe,...ye]),kr=addToSet({},[...be,..._e]),Or=function _checkValidNamespace(o){let s=at(o);s&&s.tagName||(s={namespaceURI:ar,tagName:"template"});const i=U(o.tagName),u=U(s.tagName);return!!lr[o.namespaceURI]&&(o.namespaceURI===sr?s.namespaceURI===ir?"svg"===i:s.namespaceURI===nr?"svg"===i&&("annotation-xml"===u||Er[u]):Boolean(xr[i]):o.namespaceURI===nr?s.namespaceURI===ir?"math"===i:s.namespaceURI===sr?"math"===i&&wr[u]:Boolean(kr[i]):o.namespaceURI===ir?!(s.namespaceURI===sr&&!wr[u])&&!(s.namespaceURI===nr&&!Er[u])&&!kr[i]&&(Sr[i]||!xr[i]):!("application/xhtml+xml"!==pr||!lr[o.namespaceURI]))},Cr=function _forceRemove(o){V(DOMPurify.removed,{element:o});try{o.parentNode.removeChild(o)}catch(s){o.remove()}},Ar=function _removeAttribute(o,s){try{V(DOMPurify.removed,{attribute:s.getAttributeNode(o),from:s})}catch(o){V(DOMPurify.removed,{attribute:null,from:s})}if(s.removeAttribute(o),"is"===o&&!At[o])if(Vt||Ut)try{Cr(s)}catch(o){}else try{s.setAttribute(o,"")}catch(o){}},jr=function _initDocument(o){let s=null,u=null;if($t)o=""+o;else{const s=Y(o,/^[\r\n\t ]+/);u=s&&s[0]}"application/xhtml+xml"===pr&&ar===ir&&(o=''+o+"");const _=ct?ct.createHTML(o):o;if(ar===ir)try{s=(new We).parseFromString(_,pr)}catch(o){}if(!s||!s.documentElement){s=ut.createDocument(ar,"template",null);try{s.documentElement.innerHTML=cr?lt:_}catch(o){}}const w=s.body||s.documentElement;return o&&u&&w.insertBefore(i.createTextNode(u),w.childNodes[0]||null),ar===ir?dt.call(s,Ft?"html":"body")[0]:Ft?s.documentElement:w},Pr=function _createNodeIterator(o){return pt.call(o.ownerDocument||o,o,qe.SHOW_ELEMENT|qe.SHOW_COMMENT|qe.SHOW_TEXT|qe.SHOW_PROCESSING_INSTRUCTION|qe.SHOW_CDATA_SECTION,null)},Ir=function _isClobbered(o){return o instanceof ze&&(void 0!==o.__depth&&"number"!=typeof o.__depth||void 0!==o.__removalCount&&"number"!=typeof o.__removalCount||"string"!=typeof o.nodeName||"string"!=typeof o.textContent||"function"!=typeof o.removeChild||!(o.attributes instanceof $e)||"function"!=typeof o.removeAttribute||"function"!=typeof o.setAttribute||"string"!=typeof o.namespaceURI||"function"!=typeof o.insertBefore||"function"!=typeof o.hasChildNodes)},Mr=function _isNode(o){return"function"==typeof L&&o instanceof L},Nr=function _executeHook(o,s,i){gt[o]&&B(gt[o],(o=>{o.call(DOMPurify,s,i,gr)}))},Tr=function _sanitizeElements(o){let s=null;if(Nr("beforeSanitizeElements",o,null),Ir(o))return Cr(o),!0;const i=mr(o.nodeName);if(Nr("uponSanitizeElement",o,{tagName:i,allowedTags:Ot}),o.hasChildNodes()&&!Mr(o.firstElementChild)&&ce(/<[/\w]/g,o.innerHTML)&&ce(/<[/\w]/g,o.textContent))return Cr(o),!0;if(o.nodeType===rt.progressingInstruction)return Cr(o),!0;if(Bt&&o.nodeType===rt.comment&&ce(/<[/\w]/g,o.data))return Cr(o),!0;if(!Ot[i]||It[i]){if(!It[i]&&Dr(i)){if(Pt.tagNameCheck instanceof RegExp&&ce(Pt.tagNameCheck,i))return!1;if(Pt.tagNameCheck instanceof Function&&Pt.tagNameCheck(i))return!1}if(Jt&&!Xt[i]){const s=at(o)||o.parentNode,i=it(o)||o.childNodes;if(i&&s)for(let u=i.length-1;u>=0;--u){const _=et(i[u],!0);_.__removalCount=(o.__removalCount||0)+1,s.insertBefore(_,st(o))}}return Cr(o),!0}return o instanceof Re&&!Or(o)?(Cr(o),!0):"noscript"!==i&&"noembed"!==i&&"noframes"!==i||!ce(/<\/no(script|embed|frames)/i,o.innerHTML)?(Lt&&o.nodeType===rt.text&&(s=o.textContent,B([yt,vt,bt],(o=>{s=Z(s,o," ")})),o.textContent!==s&&(V(DOMPurify.removed,{element:o.cloneNode()}),o.textContent=s)),Nr("afterSanitizeElements",o,null),!1):(Cr(o),!0)},Rr=function _isValidAttribute(o,s,u){if(Wt&&("id"===s||"name"===s)&&(u in i||u in vr||"__depth"===u||"__removalCount"===u))return!1;if(Tt&&!Mt[s]&&ce(_t,s));else if(Nt&&ce(Et,s));else if(!At[s]||Mt[s]){if(!(Dr(o)&&(Pt.tagNameCheck instanceof RegExp&&ce(Pt.tagNameCheck,o)||Pt.tagNameCheck instanceof Function&&Pt.tagNameCheck(o))&&(Pt.attributeNameCheck instanceof RegExp&&ce(Pt.attributeNameCheck,s)||Pt.attributeNameCheck instanceof Function&&Pt.attributeNameCheck(s))||"is"===s&&Pt.allowCustomizedBuiltInElements&&(Pt.tagNameCheck instanceof RegExp&&ce(Pt.tagNameCheck,u)||Pt.tagNameCheck instanceof Function&&Pt.tagNameCheck(u))))return!1}else if(tr[s]);else if(ce(kt,Z(u,St,"")));else if("src"!==s&&"xlink:href"!==s&&"href"!==s||"script"===o||0!==ee(u,"data:")||!Zt[o])if(Rt&&!ce(wt,Z(u,St,"")));else if(u)return!1;return!0},Dr=function _isBasicCustomElement(o){return"annotation-xml"!==o&&Y(o,xt)},Lr=function _sanitizeAttributes(o){Nr("beforeSanitizeAttributes",o,null);const{attributes:s}=o;if(!s)return;const i={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:At};let u=s.length;for(;u--;){const _=s[u],{name:w,namespaceURI:x,value:C}=_,j=mr(w);let L="value"===w?C:ie(C);if(i.attrName=j,i.attrValue=L,i.keepAttr=!0,i.forceKeepAttr=void 0,Nr("uponSanitizeAttribute",o,i),L=i.attrValue,i.forceKeepAttr)continue;if(Ar(w,o),!i.keepAttr)continue;if(!Dt&&ce(/\/>/i,L)){Ar(w,o);continue}if(Bt&&ce(/((--!?|])>)|<\/(style|title)/i,L)){Ar(w,o);continue}Lt&&B([yt,vt,bt],(o=>{L=Z(L,o," ")}));const V=mr(o.nodeName);if(Rr(V,j,L)){if(!Kt||"id"!==j&&"name"!==j||(Ar(w,o),L=Ht+L),ct&&"object"==typeof Ye&&"function"==typeof Ye.getAttributeType)if(x);else switch(Ye.getAttributeType(V,j)){case"TrustedHTML":L=ct.createHTML(L);break;case"TrustedScriptURL":L=ct.createScriptURL(L)}try{x?o.setAttributeNS(x,w,L):o.setAttribute(w,L),Ir(o)?Cr(o):$(DOMPurify.removed)}catch(o){}}}Nr("afterSanitizeAttributes",o,null)},Br=function _sanitizeShadowDOM(o){let s=null;const i=Pr(o);for(Nr("beforeSanitizeShadowDOM",o,null);s=i.nextNode();){if(Nr("uponSanitizeShadowNode",s,null),Tr(s))continue;const o=at(s);s.nodeType===rt.element&&(o&&o.__depth?s.__depth=(s.__removalCount||0)+o.__depth+1:s.__depth=1),(s.__depth>=yr||s.__depth<0||numberIsNaN(s.__depth))&&Cr(s),s.content instanceof x&&(s.content.__depth=s.__depth,_sanitizeShadowDOM(s.content)),Lr(s)}Nr("afterSanitizeShadowDOM",o,null)};return DOMPurify.sanitize=function(o){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=null,_=null,w=null,C=null;if(cr=!o,cr&&(o="\x3c!--\x3e"),"string"!=typeof o&&!Mr(o)){if("function"!=typeof o.toString)throw le("toString is not a function");if("string"!=typeof(o=o.toString()))throw le("dirty is not a string, aborting")}if(!DOMPurify.isSupported)return o;if(qt||_r(s),DOMPurify.removed=[],"string"==typeof o&&(Gt=!1),Gt){if(o.nodeName){const s=mr(o.nodeName);if(!Ot[s]||It[s])throw le("root node is forbidden and cannot be sanitized in-place")}}else if(o instanceof L)i=jr("\x3c!----\x3e"),_=i.ownerDocument.importNode(o,!0),_.nodeType===rt.element&&"BODY"===_.nodeName||"HTML"===_.nodeName?i=_:i.appendChild(_);else{if(!Vt&&!Lt&&!Ft&&-1===o.indexOf("<"))return ct&&zt?ct.createHTML(o):o;if(i=jr(o),!i)return Vt?null:zt?lt:""}i&&$t&&Cr(i.firstChild);const j=Pr(Gt?o:i);for(;w=j.nextNode();){if(Tr(w))continue;const o=at(w);w.nodeType===rt.element&&(o&&o.__depth?w.__depth=(w.__removalCount||0)+o.__depth+1:w.__depth=1),(w.__depth>=yr||w.__depth<0||numberIsNaN(w.__depth))&&Cr(w),w.content instanceof x&&(w.content.__depth=w.__depth,Br(w.content)),Lr(w)}if(Gt)return o;if(Vt){if(Ut)for(C=ht.call(i.ownerDocument);i.firstChild;)C.appendChild(i.firstChild);else C=i;return(At.shadowroot||At.shadowrootmode)&&(C=mt.call(u,C,!0)),C}let $=Ft?i.outerHTML:i.innerHTML;return Ft&&Ot["!doctype"]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&ce(Qe,i.ownerDocument.doctype.name)&&($="\n"+$),Lt&&B([yt,vt,bt],(o=>{$=Z($,o," ")})),ct&&zt?ct.createHTML($):$},DOMPurify.setConfig=function(){_r(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),qt=!0},DOMPurify.clearConfig=function(){gr=null,qt=!1},DOMPurify.isValidAttribute=function(o,s,i){gr||_r({});const u=mr(o),_=mr(s);return Rr(u,_,i)},DOMPurify.addHook=function(o,s){"function"==typeof s&&(gt[o]=gt[o]||[],V(gt[o],s))},DOMPurify.removeHook=function(o){if(gt[o])return $(gt[o])},DOMPurify.removeHooks=function(o){gt[o]&&(gt[o]=[])},DOMPurify.removeAllHooks=function(){gt={}},DOMPurify}return createDOMPurify()}()},78004:o=>{"use strict";class SubRange{constructor(o,s){this.low=o,this.high=s,this.length=1+s-o}overlaps(o){return!(this.higho.high)}touches(o){return!(this.high+1o.high)}add(o){return new SubRange(Math.min(this.low,o.low),Math.max(this.high,o.high))}subtract(o){return o.low<=this.low&&o.high>=this.high?[]:o.low>this.low&&o.higho+s.length),0)}add(o,s){var _add=o=>{for(var s=0;s{for(var s=0;s{for(var s=0;s{for(var i=s.low;i<=s.high;)o.push(i),i++;return o}),[])}subranges(){return this.ranges.map((o=>({low:o.low,high:o.high,length:1+o.high-o.low})))}}o.exports=DRange},30655:(o,s,i)=>{"use strict";var u=i(70453)("%Object.defineProperty%",!0)||!1;if(u)try{u({},"a",{value:1})}catch(o){u=!1}o.exports=u},41237:o=>{"use strict";o.exports=EvalError},69383:o=>{"use strict";o.exports=Error},79290:o=>{"use strict";o.exports=RangeError},79538:o=>{"use strict";o.exports=ReferenceError},58068:o=>{"use strict";o.exports=SyntaxError},69675:o=>{"use strict";o.exports=TypeError},35345:o=>{"use strict";o.exports=URIError},37007:o=>{"use strict";var s,i="object"==typeof Reflect?Reflect:null,u=i&&"function"==typeof i.apply?i.apply:function ReflectApply(o,s,i){return Function.prototype.apply.call(o,s,i)};s=i&&"function"==typeof i.ownKeys?i.ownKeys:Object.getOwnPropertySymbols?function ReflectOwnKeys(o){return Object.getOwnPropertyNames(o).concat(Object.getOwnPropertySymbols(o))}:function ReflectOwnKeys(o){return Object.getOwnPropertyNames(o)};var _=Number.isNaN||function NumberIsNaN(o){return o!=o};function EventEmitter(){EventEmitter.init.call(this)}o.exports=EventEmitter,o.exports.once=function once(o,s){return new Promise((function(i,u){function errorListener(i){o.removeListener(s,resolver),u(i)}function resolver(){"function"==typeof o.removeListener&&o.removeListener("error",errorListener),i([].slice.call(arguments))}eventTargetAgnosticAddListener(o,s,resolver,{once:!0}),"error"!==s&&function addErrorHandlerIfEventEmitter(o,s,i){"function"==typeof o.on&&eventTargetAgnosticAddListener(o,"error",s,i)}(o,errorListener,{once:!0})}))},EventEmitter.EventEmitter=EventEmitter,EventEmitter.prototype._events=void 0,EventEmitter.prototype._eventsCount=0,EventEmitter.prototype._maxListeners=void 0;var w=10;function checkListener(o){if("function"!=typeof o)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof o)}function _getMaxListeners(o){return void 0===o._maxListeners?EventEmitter.defaultMaxListeners:o._maxListeners}function _addListener(o,s,i,u){var _,w,x;if(checkListener(i),void 0===(w=o._events)?(w=o._events=Object.create(null),o._eventsCount=0):(void 0!==w.newListener&&(o.emit("newListener",s,i.listener?i.listener:i),w=o._events),x=w[s]),void 0===x)x=w[s]=i,++o._eventsCount;else if("function"==typeof x?x=w[s]=u?[i,x]:[x,i]:u?x.unshift(i):x.push(i),(_=_getMaxListeners(o))>0&&x.length>_&&!x.warned){x.warned=!0;var C=new Error("Possible EventEmitter memory leak detected. "+x.length+" "+String(s)+" listeners added. Use emitter.setMaxListeners() to increase limit");C.name="MaxListenersExceededWarning",C.emitter=o,C.type=s,C.count=x.length,function ProcessEmitWarning(o){console&&console.warn&&console.warn(o)}(C)}return o}function onceWrapper(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function _onceWrap(o,s,i){var u={fired:!1,wrapFn:void 0,target:o,type:s,listener:i},_=onceWrapper.bind(u);return _.listener=i,u.wrapFn=_,_}function _listeners(o,s,i){var u=o._events;if(void 0===u)return[];var _=u[s];return void 0===_?[]:"function"==typeof _?i?[_.listener||_]:[_]:i?function unwrapListeners(o){for(var s=new Array(o.length),i=0;i0&&(x=s[0]),x instanceof Error)throw x;var C=new Error("Unhandled error."+(x?" ("+x.message+")":""));throw C.context=x,C}var j=w[o];if(void 0===j)return!1;if("function"==typeof j)u(j,this,s);else{var L=j.length,B=arrayClone(j,L);for(i=0;i=0;w--)if(i[w]===s||i[w].listener===s){x=i[w].listener,_=w;break}if(_<0)return this;0===_?i.shift():function spliceOne(o,s){for(;s+1=0;u--)this.removeListener(o,s[u]);return this},EventEmitter.prototype.listeners=function listeners(o){return _listeners(this,o,!0)},EventEmitter.prototype.rawListeners=function rawListeners(o){return _listeners(this,o,!1)},EventEmitter.listenerCount=function(o,s){return"function"==typeof o.listenerCount?o.listenerCount(s):listenerCount.call(o,s)},EventEmitter.prototype.listenerCount=listenerCount,EventEmitter.prototype.eventNames=function eventNames(){return this._eventsCount>0?s(this._events):[]}},85587:(o,s,i)=>{"use strict";var u=i(26311),_=create(Error);function create(o){return FormattedError.displayName=o.displayName||o.name,FormattedError;function FormattedError(s){return s&&(s=u.apply(null,arguments)),new o(s)}}o.exports=_,_.eval=create(EvalError),_.range=create(RangeError),_.reference=create(ReferenceError),_.syntax=create(SyntaxError),_.type=create(TypeError),_.uri=create(URIError),_.create=create},26311:o=>{!function(){var s;function format(o){for(var s,i,u,_,w=1,x=[].slice.call(arguments),C=0,j=o.length,L="",B=!1,$=!1,nextArg=function(){return x[w++]},slurpNumber=function(){for(var i="";/\d/.test(o[C]);)i+=o[C++],s=o[C];return i.length>0?parseInt(i):null};C{"use strict";var s=Object.prototype.toString,i=Math.max,u=function concatty(o,s){for(var i=[],u=0;u{"use strict";var u=i(89353);o.exports=Function.prototype.bind||u},70453:(o,s,i)=>{"use strict";var u,_=i(69383),w=i(41237),x=i(79290),C=i(79538),j=i(58068),L=i(69675),B=i(35345),$=Function,getEvalledConstructor=function(o){try{return $('"use strict"; return ('+o+").constructor;")()}catch(o){}},V=Object.getOwnPropertyDescriptor;if(V)try{V({},"")}catch(o){V=null}var throwTypeError=function(){throw new L},U=V?function(){try{return throwTypeError}catch(o){try{return V(arguments,"callee").get}catch(o){return throwTypeError}}}():throwTypeError,z=i(64039)(),Y=i(80024)(),Z=Object.getPrototypeOf||(Y?function(o){return o.__proto__}:null),ee={},ie="undefined"!=typeof Uint8Array&&Z?Z(Uint8Array):u,ae={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?u:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?u:ArrayBuffer,"%ArrayIteratorPrototype%":z&&Z?Z([][Symbol.iterator]()):u,"%AsyncFromSyncIteratorPrototype%":u,"%AsyncFunction%":ee,"%AsyncGenerator%":ee,"%AsyncGeneratorFunction%":ee,"%AsyncIteratorPrototype%":ee,"%Atomics%":"undefined"==typeof Atomics?u:Atomics,"%BigInt%":"undefined"==typeof BigInt?u:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?u:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?u:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?u:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":_,"%eval%":eval,"%EvalError%":w,"%Float32Array%":"undefined"==typeof Float32Array?u:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?u:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?u:FinalizationRegistry,"%Function%":$,"%GeneratorFunction%":ee,"%Int8Array%":"undefined"==typeof Int8Array?u:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?u:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?u:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":z&&Z?Z(Z([][Symbol.iterator]())):u,"%JSON%":"object"==typeof JSON?JSON:u,"%Map%":"undefined"==typeof Map?u:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&z&&Z?Z((new Map)[Symbol.iterator]()):u,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?u:Promise,"%Proxy%":"undefined"==typeof Proxy?u:Proxy,"%RangeError%":x,"%ReferenceError%":C,"%Reflect%":"undefined"==typeof Reflect?u:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?u:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&z&&Z?Z((new Set)[Symbol.iterator]()):u,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?u:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":z&&Z?Z(""[Symbol.iterator]()):u,"%Symbol%":z?Symbol:u,"%SyntaxError%":j,"%ThrowTypeError%":U,"%TypedArray%":ie,"%TypeError%":L,"%Uint8Array%":"undefined"==typeof Uint8Array?u:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?u:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?u:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?u:Uint32Array,"%URIError%":B,"%WeakMap%":"undefined"==typeof WeakMap?u:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?u:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?u:WeakSet};if(Z)try{null.error}catch(o){var ce=Z(Z(o));ae["%Error.prototype%"]=ce}var le=function doEval(o){var s;if("%AsyncFunction%"===o)s=getEvalledConstructor("async function () {}");else if("%GeneratorFunction%"===o)s=getEvalledConstructor("function* () {}");else if("%AsyncGeneratorFunction%"===o)s=getEvalledConstructor("async function* () {}");else if("%AsyncGenerator%"===o){var i=doEval("%AsyncGeneratorFunction%");i&&(s=i.prototype)}else if("%AsyncIteratorPrototype%"===o){var u=doEval("%AsyncGenerator%");u&&Z&&(s=Z(u.prototype))}return ae[o]=s,s},pe={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},de=i(66743),fe=i(9957),ye=de.call(Function.call,Array.prototype.concat),be=de.call(Function.apply,Array.prototype.splice),_e=de.call(Function.call,String.prototype.replace),we=de.call(Function.call,String.prototype.slice),Se=de.call(Function.call,RegExp.prototype.exec),xe=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,Pe=/\\(\\)?/g,Te=function getBaseIntrinsic(o,s){var i,u=o;if(fe(pe,u)&&(u="%"+(i=pe[u])[0]+"%"),fe(ae,u)){var _=ae[u];if(_===ee&&(_=le(u)),void 0===_&&!s)throw new L("intrinsic "+o+" exists, but is not available. Please file an issue!");return{alias:i,name:u,value:_}}throw new j("intrinsic "+o+" does not exist!")};o.exports=function GetIntrinsic(o,s){if("string"!=typeof o||0===o.length)throw new L("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof s)throw new L('"allowMissing" argument must be a boolean');if(null===Se(/^%?[^%]*%?$/,o))throw new j("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var i=function stringToPath(o){var s=we(o,0,1),i=we(o,-1);if("%"===s&&"%"!==i)throw new j("invalid intrinsic syntax, expected closing `%`");if("%"===i&&"%"!==s)throw new j("invalid intrinsic syntax, expected opening `%`");var u=[];return _e(o,xe,(function(o,s,i,_){u[u.length]=i?_e(_,Pe,"$1"):s||o})),u}(o),u=i.length>0?i[0]:"",_=Te("%"+u+"%",s),w=_.name,x=_.value,C=!1,B=_.alias;B&&(u=B[0],be(i,ye([0,1],B)));for(var $=1,U=!0;$=i.length){var ee=V(x,z);x=(U=!!ee)&&"get"in ee&&!("originalValue"in ee.get)?ee.get:x[z]}else U=fe(x,z),x=x[z];U&&!C&&(ae[w]=x)}}return x}},75795:(o,s,i)=>{"use strict";var u=i(70453)("%Object.getOwnPropertyDescriptor%",!0);if(u)try{u([],"length")}catch(o){u=null}o.exports=u},30592:(o,s,i)=>{"use strict";var u=i(30655),_=function hasPropertyDescriptors(){return!!u};_.hasArrayLengthDefineBug=function hasArrayLengthDefineBug(){if(!u)return null;try{return 1!==u([],"length",{value:1}).length}catch(o){return!0}},o.exports=_},80024:o=>{"use strict";var s={__proto__:null,foo:{}},i=Object;o.exports=function hasProto(){return{__proto__:s}.foo===s.foo&&!(s instanceof i)}},64039:(o,s,i)=>{"use strict";var u="undefined"!=typeof Symbol&&Symbol,_=i(41333);o.exports=function hasNativeSymbols(){return"function"==typeof u&&("function"==typeof Symbol&&("symbol"==typeof u("foo")&&("symbol"==typeof Symbol("bar")&&_())))}},41333:o=>{"use strict";o.exports=function hasSymbols(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var o={},s=Symbol("test"),i=Object(s);if("string"==typeof s)return!1;if("[object Symbol]"!==Object.prototype.toString.call(s))return!1;if("[object Symbol]"!==Object.prototype.toString.call(i))return!1;for(s in o[s]=42,o)return!1;if("function"==typeof Object.keys&&0!==Object.keys(o).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(o).length)return!1;var u=Object.getOwnPropertySymbols(o);if(1!==u.length||u[0]!==s)return!1;if(!Object.prototype.propertyIsEnumerable.call(o,s))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var _=Object.getOwnPropertyDescriptor(o,s);if(42!==_.value||!0!==_.enumerable)return!1}return!0}},9957:(o,s,i)=>{"use strict";var u=Function.prototype.call,_=Object.prototype.hasOwnProperty,w=i(66743);o.exports=w.call(u,_)},45981:o=>{function deepFreeze(o){return o instanceof Map?o.clear=o.delete=o.set=function(){throw new Error("map is read-only")}:o instanceof Set&&(o.add=o.clear=o.delete=function(){throw new Error("set is read-only")}),Object.freeze(o),Object.getOwnPropertyNames(o).forEach((function(s){var i=o[s];"object"!=typeof i||Object.isFrozen(i)||deepFreeze(i)})),o}var s=deepFreeze,i=deepFreeze;s.default=i;class Response{constructor(o){void 0===o.data&&(o.data={}),this.data=o.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function escapeHTML(o){return o.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function inherit(o,...s){const i=Object.create(null);for(const s in o)i[s]=o[s];return s.forEach((function(o){for(const s in o)i[s]=o[s]})),i}const emitsWrappingTags=o=>!!o.kind;class HTMLRenderer{constructor(o,s){this.buffer="",this.classPrefix=s.classPrefix,o.walk(this)}addText(o){this.buffer+=escapeHTML(o)}openNode(o){if(!emitsWrappingTags(o))return;let s=o.kind;o.sublanguage||(s=`${this.classPrefix}${s}`),this.span(s)}closeNode(o){emitsWrappingTags(o)&&(this.buffer+="")}value(){return this.buffer}span(o){this.buffer+=``}}class TokenTree{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(o){this.top.children.push(o)}openNode(o){const s={kind:o,children:[]};this.add(s),this.stack.push(s)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(o){return this.constructor._walk(o,this.rootNode)}static _walk(o,s){return"string"==typeof s?o.addText(s):s.children&&(o.openNode(s),s.children.forEach((s=>this._walk(o,s))),o.closeNode(s)),o}static _collapse(o){"string"!=typeof o&&o.children&&(o.children.every((o=>"string"==typeof o))?o.children=[o.children.join("")]:o.children.forEach((o=>{TokenTree._collapse(o)})))}}class TokenTreeEmitter extends TokenTree{constructor(o){super(),this.options=o}addKeyword(o,s){""!==o&&(this.openNode(s),this.addText(o),this.closeNode())}addText(o){""!==o&&this.add(o)}addSublanguage(o,s){const i=o.root;i.kind=s,i.sublanguage=!0,this.add(i)}toHTML(){return new HTMLRenderer(this,this.options).value()}finalize(){return!0}}function source(o){return o?"string"==typeof o?o:o.source:null}const u=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;const _="[a-zA-Z]\\w*",w="[a-zA-Z_]\\w*",x="\\b\\d+(\\.\\d+)?",C="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",j="\\b(0b[01]+)",L={begin:"\\\\[\\s\\S]",relevance:0},B={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[L]},$={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[L]},V={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},COMMENT=function(o,s,i={}){const u=inherit({className:"comment",begin:o,end:s,contains:[]},i);return u.contains.push(V),u.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),u},U=COMMENT("//","$"),z=COMMENT("/\\*","\\*/"),Y=COMMENT("#","$"),Z={className:"number",begin:x,relevance:0},ee={className:"number",begin:C,relevance:0},ie={className:"number",begin:j,relevance:0},ae={className:"number",begin:x+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},ce={begin:/(?=\/[^/\n]*\/)/,contains:[{className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[L,{begin:/\[/,end:/\]/,relevance:0,contains:[L]}]}]},le={className:"title",begin:_,relevance:0},pe={className:"title",begin:w,relevance:0},de={begin:"\\.\\s*"+w,relevance:0};var fe=Object.freeze({__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:_,UNDERSCORE_IDENT_RE:w,NUMBER_RE:x,C_NUMBER_RE:C,BINARY_NUMBER_RE:j,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(o={})=>{const s=/^#![ ]*\//;return o.binary&&(o.begin=function concat(...o){return o.map((o=>source(o))).join("")}(s,/.*\b/,o.binary,/\b.*/)),inherit({className:"meta",begin:s,end:/$/,relevance:0,"on:begin":(o,s)=>{0!==o.index&&s.ignoreMatch()}},o)},BACKSLASH_ESCAPE:L,APOS_STRING_MODE:B,QUOTE_STRING_MODE:$,PHRASAL_WORDS_MODE:V,COMMENT,C_LINE_COMMENT_MODE:U,C_BLOCK_COMMENT_MODE:z,HASH_COMMENT_MODE:Y,NUMBER_MODE:Z,C_NUMBER_MODE:ee,BINARY_NUMBER_MODE:ie,CSS_NUMBER_MODE:ae,REGEXP_MODE:ce,TITLE_MODE:le,UNDERSCORE_TITLE_MODE:pe,METHOD_GUARD:de,END_SAME_AS_BEGIN:function(o){return Object.assign(o,{"on:begin":(o,s)=>{s.data._beginMatch=o[1]},"on:end":(o,s)=>{s.data._beginMatch!==o[1]&&s.ignoreMatch()}})}});function skipIfhasPrecedingDot(o,s){"."===o.input[o.index-1]&&s.ignoreMatch()}function beginKeywords(o,s){s&&o.beginKeywords&&(o.begin="\\b("+o.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",o.__beforeBegin=skipIfhasPrecedingDot,o.keywords=o.keywords||o.beginKeywords,delete o.beginKeywords,void 0===o.relevance&&(o.relevance=0))}function compileIllegal(o,s){Array.isArray(o.illegal)&&(o.illegal=function either(...o){return"("+o.map((o=>source(o))).join("|")+")"}(...o.illegal))}function compileMatch(o,s){if(o.match){if(o.begin||o.end)throw new Error("begin & end are not supported with match");o.begin=o.match,delete o.match}}function compileRelevance(o,s){void 0===o.relevance&&(o.relevance=1)}const ye=["of","and","for","in","not","or","if","then","parent","list","value"],be="keyword";function compileKeywords(o,s,i=be){const u={};return"string"==typeof o?compileList(i,o.split(" ")):Array.isArray(o)?compileList(i,o):Object.keys(o).forEach((function(i){Object.assign(u,compileKeywords(o[i],s,i))})),u;function compileList(o,i){s&&(i=i.map((o=>o.toLowerCase()))),i.forEach((function(s){const i=s.split("|");u[i[0]]=[o,scoreForKeyword(i[0],i[1])]}))}}function scoreForKeyword(o,s){return s?Number(s):function commonKeyword(o){return ye.includes(o.toLowerCase())}(o)?0:1}function compileLanguage(o,{plugins:s}){function langRe(s,i){return new RegExp(source(s),"m"+(o.case_insensitive?"i":"")+(i?"g":""))}class MultiRegex{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(o,s){s.position=this.position++,this.matchIndexes[this.matchAt]=s,this.regexes.push([s,o]),this.matchAt+=function countMatchGroups(o){return new RegExp(o.toString()+"|").exec("").length-1}(o)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const o=this.regexes.map((o=>o[1]));this.matcherRe=langRe(function join(o,s="|"){let i=0;return o.map((o=>{i+=1;const s=i;let _=source(o),w="";for(;_.length>0;){const o=u.exec(_);if(!o){w+=_;break}w+=_.substring(0,o.index),_=_.substring(o.index+o[0].length),"\\"===o[0][0]&&o[1]?w+="\\"+String(Number(o[1])+s):(w+=o[0],"("===o[0]&&i++)}return w})).map((o=>`(${o})`)).join(s)}(o),!0),this.lastIndex=0}exec(o){this.matcherRe.lastIndex=this.lastIndex;const s=this.matcherRe.exec(o);if(!s)return null;const i=s.findIndex(((o,s)=>s>0&&void 0!==o)),u=this.matchIndexes[i];return s.splice(0,i),Object.assign(s,u)}}class ResumableMultiRegex{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(o){if(this.multiRegexes[o])return this.multiRegexes[o];const s=new MultiRegex;return this.rules.slice(o).forEach((([o,i])=>s.addRule(o,i))),s.compile(),this.multiRegexes[o]=s,s}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(o,s){this.rules.push([o,s]),"begin"===s.type&&this.count++}exec(o){const s=this.getMatcher(this.regexIndex);s.lastIndex=this.lastIndex;let i=s.exec(o);if(this.resumingScanAtSamePosition())if(i&&i.index===this.lastIndex);else{const s=this.getMatcher(0);s.lastIndex=this.lastIndex+1,i=s.exec(o)}return i&&(this.regexIndex+=i.position+1,this.regexIndex===this.count&&this.considerAll()),i}}if(o.compilerExtensions||(o.compilerExtensions=[]),o.contains&&o.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return o.classNameAliases=inherit(o.classNameAliases||{}),function compileMode(s,i){const u=s;if(s.isCompiled)return u;[compileMatch].forEach((o=>o(s,i))),o.compilerExtensions.forEach((o=>o(s,i))),s.__beforeBegin=null,[beginKeywords,compileIllegal,compileRelevance].forEach((o=>o(s,i))),s.isCompiled=!0;let _=null;if("object"==typeof s.keywords&&(_=s.keywords.$pattern,delete s.keywords.$pattern),s.keywords&&(s.keywords=compileKeywords(s.keywords,o.case_insensitive)),s.lexemes&&_)throw new Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");return _=_||s.lexemes||/\w+/,u.keywordPatternRe=langRe(_,!0),i&&(s.begin||(s.begin=/\B|\b/),u.beginRe=langRe(s.begin),s.endSameAsBegin&&(s.end=s.begin),s.end||s.endsWithParent||(s.end=/\B|\b/),s.end&&(u.endRe=langRe(s.end)),u.terminatorEnd=source(s.end)||"",s.endsWithParent&&i.terminatorEnd&&(u.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)),s.illegal&&(u.illegalRe=langRe(s.illegal)),s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((function(o){return function expandOrCloneMode(o){o.variants&&!o.cachedVariants&&(o.cachedVariants=o.variants.map((function(s){return inherit(o,{variants:null},s)})));if(o.cachedVariants)return o.cachedVariants;if(dependencyOnParent(o))return inherit(o,{starts:o.starts?inherit(o.starts):null});if(Object.isFrozen(o))return inherit(o);return o}("self"===o?s:o)}))),s.contains.forEach((function(o){compileMode(o,u)})),s.starts&&compileMode(s.starts,i),u.matcher=function buildModeRegex(o){const s=new ResumableMultiRegex;return o.contains.forEach((o=>s.addRule(o.begin,{rule:o,type:"begin"}))),o.terminatorEnd&&s.addRule(o.terminatorEnd,{type:"end"}),o.illegal&&s.addRule(o.illegal,{type:"illegal"}),s}(u),u}(o)}function dependencyOnParent(o){return!!o&&(o.endsWithParent||dependencyOnParent(o.starts))}function BuildVuePlugin(o){const s={props:["language","code","autodetect"],data:function(){return{detectedLanguage:"",unknownLanguage:!1}},computed:{className(){return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){if(!this.autoDetect&&!o.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`),this.unknownLanguage=!0,escapeHTML(this.code);let s={};return this.autoDetect?(s=o.highlightAuto(this.code),this.detectedLanguage=s.language):(s=o.highlight(this.language,this.code,this.ignoreIllegals),this.detectedLanguage=this.language),s.value},autoDetect(){return!this.language||function hasValueOrEmptyAttribute(o){return Boolean(o||""===o)}(this.autodetect)},ignoreIllegals:()=>!0},render(o){return o("pre",{},[o("code",{class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{Component:s,VuePlugin:{install(o){o.component("highlightjs",s)}}}}const _e={"after:highlightElement":({el:o,result:s,text:i})=>{const u=nodeStream(o);if(!u.length)return;const _=document.createElement("div");_.innerHTML=s.value,s.value=function mergeStreams(o,s,i){let u=0,_="";const w=[];function selectStream(){return o.length&&s.length?o[0].offset!==s[0].offset?o[0].offset"}function close(o){_+=""+tag(o)+">"}function render(o){("start"===o.event?open:close)(o.node)}for(;o.length||s.length;){let s=selectStream();if(_+=escapeHTML(i.substring(u,s[0].offset)),u=s[0].offset,s===o){w.reverse().forEach(close);do{render(s.splice(0,1)[0]),s=selectStream()}while(s===o&&s.length&&s[0].offset===u);w.reverse().forEach(open)}else"start"===s[0].event?w.push(s[0].node):w.pop(),render(s.splice(0,1)[0])}return _+escapeHTML(i.substr(u))}(u,nodeStream(_),i)}};function tag(o){return o.nodeName.toLowerCase()}function nodeStream(o){const s=[];return function _nodeStream(o,i){for(let u=o.firstChild;u;u=u.nextSibling)3===u.nodeType?i+=u.nodeValue.length:1===u.nodeType&&(s.push({event:"start",offset:i,node:u}),i=_nodeStream(u,i),tag(u).match(/br|hr|img|input/)||s.push({event:"stop",offset:i,node:u}));return i}(o,0),s}const we={},error=o=>{console.error(o)},warn=(o,...s)=>{console.log(`WARN: ${o}`,...s)},deprecated=(o,s)=>{we[`${o}/${s}`]||(console.log(`Deprecated as of ${o}. ${s}`),we[`${o}/${s}`]=!0)},Se=escapeHTML,xe=inherit,Pe=Symbol("nomatch");var Te=function(o){const i=Object.create(null),u=Object.create(null),_=[];let w=!0;const x=/(^(<[^>]+>|\t|)+|\n)/gm,C="Could not find the language '{}', did you forget to load/include a language module?",j={disableAutodetect:!0,name:"Plain text",contains:[]};let L={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:null,__emitter:TokenTreeEmitter};function shouldNotHighlight(o){return L.noHighlightRe.test(o)}function highlight(o,s,i,u){let _="",w="";"object"==typeof s?(_=o,i=s.ignoreIllegals,w=s.language,u=void 0):(deprecated("10.7.0","highlight(lang, code, ...args) has been deprecated."),deprecated("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),w=o,_=s);const x={code:_,language:w};fire("before:highlight",x);const C=x.result?x.result:_highlight(x.language,x.code,i,u);return C.code=x.code,fire("after:highlight",C),C}function _highlight(o,s,u,x){function keywordData(o,s){const i=B.case_insensitive?s[0].toLowerCase():s[0];return Object.prototype.hasOwnProperty.call(o.keywords,i)&&o.keywords[i]}function processBuffer(){null!=U.subLanguage?function processSubLanguage(){if(""===Z)return;let o=null;if("string"==typeof U.subLanguage){if(!i[U.subLanguage])return void Y.addText(Z);o=_highlight(U.subLanguage,Z,!0,z[U.subLanguage]),z[U.subLanguage]=o.top}else o=highlightAuto(Z,U.subLanguage.length?U.subLanguage:null);U.relevance>0&&(ee+=o.relevance),Y.addSublanguage(o.emitter,o.language)}():function processKeywords(){if(!U.keywords)return void Y.addText(Z);let o=0;U.keywordPatternRe.lastIndex=0;let s=U.keywordPatternRe.exec(Z),i="";for(;s;){i+=Z.substring(o,s.index);const u=keywordData(U,s);if(u){const[o,_]=u;if(Y.addText(i),i="",ee+=_,o.startsWith("_"))i+=s[0];else{const i=B.classNameAliases[o]||o;Y.addKeyword(s[0],i)}}else i+=s[0];o=U.keywordPatternRe.lastIndex,s=U.keywordPatternRe.exec(Z)}i+=Z.substr(o),Y.addText(i)}(),Z=""}function startNewMode(o){return o.className&&Y.openNode(B.classNameAliases[o.className]||o.className),U=Object.create(o,{parent:{value:U}}),U}function endOfMode(o,s,i){let u=function startsWith(o,s){const i=o&&o.exec(s);return i&&0===i.index}(o.endRe,i);if(u){if(o["on:end"]){const i=new Response(o);o["on:end"](s,i),i.isMatchIgnored&&(u=!1)}if(u){for(;o.endsParent&&o.parent;)o=o.parent;return o}}if(o.endsWithParent)return endOfMode(o.parent,s,i)}function doIgnore(o){return 0===U.matcher.regexIndex?(Z+=o[0],1):(ce=!0,0)}function doBeginMatch(o){const s=o[0],i=o.rule,u=new Response(i),_=[i.__beforeBegin,i["on:begin"]];for(const i of _)if(i&&(i(o,u),u.isMatchIgnored))return doIgnore(s);return i&&i.endSameAsBegin&&(i.endRe=function escape(o){return new RegExp(o.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}(s)),i.skip?Z+=s:(i.excludeBegin&&(Z+=s),processBuffer(),i.returnBegin||i.excludeBegin||(Z=s)),startNewMode(i),i.returnBegin?0:s.length}function doEndMatch(o){const i=o[0],u=s.substr(o.index),_=endOfMode(U,o,u);if(!_)return Pe;const w=U;w.skip?Z+=i:(w.returnEnd||w.excludeEnd||(Z+=i),processBuffer(),w.excludeEnd&&(Z=i));do{U.className&&Y.closeNode(),U.skip||U.subLanguage||(ee+=U.relevance),U=U.parent}while(U!==_.parent);return _.starts&&(_.endSameAsBegin&&(_.starts.endRe=_.endRe),startNewMode(_.starts)),w.returnEnd?0:i.length}let j={};function processLexeme(i,_){const x=_&&_[0];if(Z+=i,null==x)return processBuffer(),0;if("begin"===j.type&&"end"===_.type&&j.index===_.index&&""===x){if(Z+=s.slice(_.index,_.index+1),!w){const s=new Error("0 width match regex");throw s.languageName=o,s.badRule=j.rule,s}return 1}if(j=_,"begin"===_.type)return doBeginMatch(_);if("illegal"===_.type&&!u){const o=new Error('Illegal lexeme "'+x+'" for mode "'+(U.className||"")+'"');throw o.mode=U,o}if("end"===_.type){const o=doEndMatch(_);if(o!==Pe)return o}if("illegal"===_.type&&""===x)return 1;if(ae>1e5&&ae>3*_.index){throw new Error("potential infinite loop, way more iterations than matches")}return Z+=x,x.length}const B=getLanguage(o);if(!B)throw error(C.replace("{}",o)),new Error('Unknown language: "'+o+'"');const $=compileLanguage(B,{plugins:_});let V="",U=x||$;const z={},Y=new L.__emitter(L);!function processContinuations(){const o=[];for(let s=U;s!==B;s=s.parent)s.className&&o.unshift(s.className);o.forEach((o=>Y.openNode(o)))}();let Z="",ee=0,ie=0,ae=0,ce=!1;try{for(U.matcher.considerAll();;){ae++,ce?ce=!1:U.matcher.considerAll(),U.matcher.lastIndex=ie;const o=U.matcher.exec(s);if(!o)break;const i=processLexeme(s.substring(ie,o.index),o);ie=o.index+i}return processLexeme(s.substr(ie)),Y.closeAllNodes(),Y.finalize(),V=Y.toHTML(),{relevance:Math.floor(ee),value:V,language:o,illegal:!1,emitter:Y,top:U}}catch(i){if(i.message&&i.message.includes("Illegal"))return{illegal:!0,illegalBy:{msg:i.message,context:s.slice(ie-100,ie+100),mode:i.mode},sofar:V,relevance:0,value:Se(s),emitter:Y};if(w)return{illegal:!1,relevance:0,value:Se(s),emitter:Y,language:o,top:U,errorRaised:i};throw i}}function highlightAuto(o,s){s=s||L.languages||Object.keys(i);const u=function justTextHighlightResult(o){const s={relevance:0,emitter:new L.__emitter(L),value:Se(o),illegal:!1,top:j};return s.emitter.addText(o),s}(o),_=s.filter(getLanguage).filter(autoDetection).map((s=>_highlight(s,o,!1)));_.unshift(u);const w=_.sort(((o,s)=>{if(o.relevance!==s.relevance)return s.relevance-o.relevance;if(o.language&&s.language){if(getLanguage(o.language).supersetOf===s.language)return 1;if(getLanguage(s.language).supersetOf===o.language)return-1}return 0})),[x,C]=w,B=x;return B.second_best=C,B}const B={"before:highlightElement":({el:o})=>{L.useBR&&(o.innerHTML=o.innerHTML.replace(/\n/g,"").replace(/ /g,"\n"))},"after:highlightElement":({result:o})=>{L.useBR&&(o.value=o.value.replace(/\n/g," "))}},$=/^(<[^>]+>|\t)+/gm,V={"after:highlightElement":({result:o})=>{L.tabReplace&&(o.value=o.value.replace($,(o=>o.replace(/\t/g,L.tabReplace))))}};function highlightElement(o){let s=null;const i=function blockLanguage(o){let s=o.className+" ";s+=o.parentNode?o.parentNode.className:"";const i=L.languageDetectRe.exec(s);if(i){const s=getLanguage(i[1]);return s||(warn(C.replace("{}",i[1])),warn("Falling back to no-highlight mode for this block.",o)),s?i[1]:"no-highlight"}return s.split(/\s+/).find((o=>shouldNotHighlight(o)||getLanguage(o)))}(o);if(shouldNotHighlight(i))return;fire("before:highlightElement",{el:o,language:i}),s=o;const _=s.textContent,w=i?highlight(_,{language:i,ignoreIllegals:!0}):highlightAuto(_);fire("after:highlightElement",{el:o,result:w,text:_}),o.innerHTML=w.value,function updateClassName(o,s,i){const _=s?u[s]:i;o.classList.add("hljs"),_&&o.classList.add(_)}(o,i,w.language),o.result={language:w.language,re:w.relevance,relavance:w.relevance},w.second_best&&(o.second_best={language:w.second_best.language,re:w.second_best.relevance,relavance:w.second_best.relevance})}const initHighlighting=()=>{if(initHighlighting.called)return;initHighlighting.called=!0,deprecated("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead.");document.querySelectorAll("pre code").forEach(highlightElement)};let U=!1;function highlightAll(){if("loading"===document.readyState)return void(U=!0);document.querySelectorAll("pre code").forEach(highlightElement)}function getLanguage(o){return o=(o||"").toLowerCase(),i[o]||i[u[o]]}function registerAliases(o,{languageName:s}){"string"==typeof o&&(o=[o]),o.forEach((o=>{u[o.toLowerCase()]=s}))}function autoDetection(o){const s=getLanguage(o);return s&&!s.disableAutodetect}function fire(o,s){const i=o;_.forEach((function(o){o[i]&&o[i](s)}))}"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(function boot(){U&&highlightAll()}),!1),Object.assign(o,{highlight,highlightAuto,highlightAll,fixMarkup:function deprecateFixMarkup(o){return deprecated("10.2.0","fixMarkup will be removed entirely in v11.0"),deprecated("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"),function fixMarkup(o){return L.tabReplace||L.useBR?o.replace(x,(o=>"\n"===o?L.useBR?" ":o:L.tabReplace?o.replace(/\t/g,L.tabReplace):o)):o}(o)},highlightElement,highlightBlock:function deprecateHighlightBlock(o){return deprecated("10.7.0","highlightBlock will be removed entirely in v12.0"),deprecated("10.7.0","Please use highlightElement now."),highlightElement(o)},configure:function configure(o){o.useBR&&(deprecated("10.3.0","'useBR' will be removed entirely in v11.0"),deprecated("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")),L=xe(L,o)},initHighlighting,initHighlightingOnLoad:function initHighlightingOnLoad(){deprecated("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."),U=!0},registerLanguage:function registerLanguage(s,u){let _=null;try{_=u(o)}catch(o){if(error("Language definition for '{}' could not be registered.".replace("{}",s)),!w)throw o;error(o),_=j}_.name||(_.name=s),i[s]=_,_.rawDefinition=u.bind(null,o),_.aliases&®isterAliases(_.aliases,{languageName:s})},unregisterLanguage:function unregisterLanguage(o){delete i[o];for(const s of Object.keys(u))u[s]===o&&delete u[s]},listLanguages:function listLanguages(){return Object.keys(i)},getLanguage,registerAliases,requireLanguage:function requireLanguage(o){deprecated("10.4.0","requireLanguage will be removed entirely in v11."),deprecated("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844");const s=getLanguage(o);if(s)return s;throw new Error("The '{}' language is required, but not loaded.".replace("{}",o))},autoDetection,inherit:xe,addPlugin:function addPlugin(o){!function upgradePluginAPI(o){o["before:highlightBlock"]&&!o["before:highlightElement"]&&(o["before:highlightElement"]=s=>{o["before:highlightBlock"](Object.assign({block:s.el},s))}),o["after:highlightBlock"]&&!o["after:highlightElement"]&&(o["after:highlightElement"]=s=>{o["after:highlightBlock"](Object.assign({block:s.el},s))})}(o),_.push(o)},vuePlugin:BuildVuePlugin(o).VuePlugin}),o.debugMode=function(){w=!1},o.safeMode=function(){w=!0},o.versionString="10.7.3";for(const o in fe)"object"==typeof fe[o]&&s(fe[o]);return Object.assign(o,fe),o.addPlugin(B),o.addPlugin(_e),o.addPlugin(V),o}({});o.exports=Te},35344:o=>{function concat(...o){return o.map((o=>function source(o){return o?"string"==typeof o?o:o.source:null}(o))).join("")}o.exports=function bash(o){const s={},i={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[s]}]};Object.assign(s,{className:"variable",variants:[{begin:concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},i]});const u={className:"subst",begin:/\$\(/,end:/\)/,contains:[o.BACKSLASH_ESCAPE]},_={begin:/<<-?\s*(?=\w+)/,starts:{contains:[o.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},w={className:"string",begin:/"/,end:/"/,contains:[o.BACKSLASH_ESCAPE,s,u]};u.contains.push(w);const x={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},o.NUMBER_MODE,s]},C=o.SHEBANG({binary:`(${["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"].join("|")})`,relevance:10}),j={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[o.inherit(o.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z._-]+\b/,keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp"},contains:[C,o.SHEBANG(),j,x,o.HASH_COMMENT_MODE,_,w,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},s]}}},73402:o=>{function concat(...o){return o.map((o=>function source(o){return o?"string"==typeof o?o:o.source:null}(o))).join("")}o.exports=function http(o){const s="HTTP/(2|1\\.[01])",i={className:"attribute",begin:concat("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},u=[i,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+s+" \\d{3})",end:/$/,contains:[{className:"meta",begin:s},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:u}},{begin:"(?=^[A-Z]+ (.*?) "+s+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:s},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:u}},o.inherit(i,{relevance:0})]}}},95089:o=>{const s="[A-Za-z$_][0-9A-Za-z$_]*",i=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],u=["true","false","null","undefined","NaN","Infinity"],_=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer","BigInt64Array","BigUint64Array","BigInt"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);function lookahead(o){return concat("(?=",o,")")}function concat(...o){return o.map((o=>function source(o){return o?"string"==typeof o?o:o.source:null}(o))).join("")}o.exports=function javascript(o){const w=s,x="<>",C=">",j={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(o,s)=>{const i=o[0].length+o.index,u=o.input[i];"<"!==u?">"===u&&(((o,{after:s})=>{const i=""+o[0].slice(1);return-1!==o.input.indexOf(i,s)})(o,{after:i})||s.ignoreMatch()):s.ignoreMatch()}},L={$pattern:s,keyword:i,literal:u,built_in:_},B="[0-9](_?[0-9])*",$=`\\.(${B})`,V="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",U={className:"number",variants:[{begin:`(\\b(${V})((${$})|\\.)?|(${$}))[eE][+-]?(${B})\\b`},{begin:`\\b(${V})\\b((${$})\\b|\\.)?|(${$})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},z={className:"subst",begin:"\\$\\{",end:"\\}",keywords:L,contains:[]},Y={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,z],subLanguage:"xml"}},Z={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,z],subLanguage:"css"}},ee={className:"string",begin:"`",end:"`",contains:[o.BACKSLASH_ESCAPE,z]},ie={className:"comment",variants:[o.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+",contains:[{className:"type",begin:"\\{",end:"\\}",relevance:0},{className:"variable",begin:w+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),o.C_BLOCK_COMMENT_MODE,o.C_LINE_COMMENT_MODE]},ae=[o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,Y,Z,ee,U,o.REGEXP_MODE];z.contains=ae.concat({begin:/\{/,end:/\}/,keywords:L,contains:["self"].concat(ae)});const ce=[].concat(ie,z.contains),le=ce.concat([{begin:/\(/,end:/\)/,keywords:L,contains:["self"].concat(ce)}]),pe={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:L,contains:le};return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:L,exports:{PARAMS_CONTAINS:le},illegal:/#(?![$_A-z])/,contains:[o.SHEBANG({label:"shebang",binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,Y,Z,ee,ie,U,{begin:concat(/[{,\n]\s*/,lookahead(concat(/(((\/\/.*$)|(\/\*(\*[^/]|[^*])*\*\/))\s*)*/,w+"\\s*:"))),relevance:0,contains:[{className:"attr",begin:w+lookahead("\\s*:"),relevance:0}]},{begin:"("+o.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[ie,o.REGEXP_MODE,{className:"function",begin:"(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+o.UNDERSCORE_IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:o.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:L,contains:le}]}]},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{variants:[{begin:x,end:C},{begin:j.begin,"on:begin":j.isTrulyOpeningTag,end:j.end}],subLanguage:"xml",contains:[{begin:j.begin,end:j.end,skip:!0,contains:["self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:L,contains:["self",o.inherit(o.TITLE_MODE,{begin:w}),pe],illegal:/%/},{beginKeywords:"while if switch catch for"},{className:"function",begin:o.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,contains:[pe,o.inherit(o.TITLE_MODE,{begin:w})]},{variants:[{begin:"\\."+w},{begin:"\\$"+w}],relevance:0},{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{beginKeywords:"extends"},o.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/,end:/[{;]/,excludeEnd:!0,contains:[o.inherit(o.TITLE_MODE,{begin:w}),"self",pe]},{begin:"(get|set)\\s+(?="+w+"\\()",end:/\{/,keywords:"get set",contains:[o.inherit(o.TITLE_MODE,{begin:w}),{begin:/\(\)/},pe]},{begin:/\$[(.]/}]}}},65772:o=>{o.exports=function json(o){const s={literal:"true false null"},i=[o.C_LINE_COMMENT_MODE,o.C_BLOCK_COMMENT_MODE],u=[o.QUOTE_STRING_MODE,o.C_NUMBER_MODE],_={end:",",endsWithParent:!0,excludeEnd:!0,contains:u,keywords:s},w={begin:/\{/,end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/,contains:[o.BACKSLASH_ESCAPE],illegal:"\\n"},o.inherit(_,{begin:/:/})].concat(i),illegal:"\\S"},x={begin:"\\[",end:"\\]",contains:[o.inherit(_)],illegal:"\\S"};return u.push(w,x),i.forEach((function(o){u.push(o)})),{name:"JSON",contains:u,keywords:s,illegal:"\\S"}}},26571:o=>{o.exports=function powershell(o){const s={$pattern:/-?[A-z\.\-]+\b/,keyword:"if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter",built_in:"ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write"},i={begin:"`[\\s\\S]",relevance:0},u={className:"variable",variants:[{begin:/\$\B/},{className:"keyword",begin:/\$this/},{begin:/\$[\w\d][\w\d_:]*/}]},_={className:"string",variants:[{begin:/"/,end:/"/},{begin:/@"/,end:/^"@/}],contains:[i,u,{className:"variable",begin:/\$[A-z]/,end:/[^A-z]/}]},w={className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]},x=o.inherit(o.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,end:/#>/}],contains:[{className:"doctag",variants:[{begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/}]}]}),C={className:"built_in",variants:[{begin:"(".concat("Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where",")+(-)[\\w\\d]+")}]},j={className:"class",beginKeywords:"class enum",end:/\s*[{]/,excludeEnd:!0,relevance:0,contains:[o.TITLE_MODE]},L={className:"function",begin:/function\s+/,end:/\s*\{|$/,excludeEnd:!0,returnBegin:!0,relevance:0,contains:[{begin:"function",relevance:0,className:"keyword"},{className:"title",begin:/\w[\w\d]*((-)[\w\d]+)*/,relevance:0},{begin:/\(/,end:/\)/,className:"params",relevance:0,contains:[u]}]},B={begin:/using\s/,end:/$/,returnBegin:!0,contains:[_,w,{className:"keyword",begin:/(using|assembly|command|module|namespace|type)/}]},$={variants:[{className:"operator",begin:"(".concat("-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor",")\\b")},{className:"literal",begin:/(-)[\w\d]+/,relevance:0}]},V={className:"function",begin:/\[.*\]\s*[\w]+[ ]??\(/,end:/$/,returnBegin:!0,relevance:0,contains:[{className:"keyword",begin:"(".concat(s.keyword.toString().replace(/\s/g,"|"),")\\b"),endsParent:!0,relevance:0},o.inherit(o.TITLE_MODE,{endsParent:!0})]},U=[V,x,i,o.NUMBER_MODE,_,w,C,u,{className:"literal",begin:/\$(null|true|false)\b/},{className:"selector-tag",begin:/@\B/,relevance:0}],z={begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[].concat("self",U,{begin:"("+["string","char","byte","int","long","bool","decimal","single","double","DateTime","xml","array","hashtable","void"].join("|")+")",className:"built_in",relevance:0},{className:"type",begin:/[\.\w\d]+/,relevance:0})};return V.contains.unshift(z),{name:"PowerShell",aliases:["ps","ps1"],case_insensitive:!0,keywords:s,contains:U.concat(j,L,B,$,z)}}},17285:o=>{function source(o){return o?"string"==typeof o?o:o.source:null}function lookahead(o){return concat("(?=",o,")")}function concat(...o){return o.map((o=>source(o))).join("")}function either(...o){return"("+o.map((o=>source(o))).join("|")+")"}o.exports=function xml(o){const s=concat(/[A-Z_]/,function optional(o){return concat("(",o,")?")}(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),i={className:"symbol",begin:/&[a-z]+;|[0-9]+;|[a-f0-9]+;/},u={begin:/\s/,contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},_=o.inherit(u,{begin:/\(/,end:/\)/}),w=o.inherit(o.APOS_STRING_MODE,{className:"meta-string"}),x=o.inherit(o.QUOTE_STRING_MODE,{className:"meta-string"}),C={endsWithParent:!0,illegal:/,relevance:0,contains:[{className:"attr",begin:/[A-Za-z0-9._:-]+/,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[i]},{begin:/'/,end:/'/,contains:[i]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[u,x,w,_,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[u,_,x,w]}]}]},o.COMMENT(//,{relevance:10}),{begin://,relevance:10},i,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/