@sap/cds 6.0.1 → 6.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/bin/build/provider/mtx-sidecar/index.js +50 -20
  3. package/bin/build/util.js +6 -4
  4. package/bin/deploy/to-hana/hana.js +6 -3
  5. package/bin/serve.js +2 -10
  6. package/lib/deploy.js +1 -2
  7. package/lib/env/requires.js +1 -0
  8. package/lib/index.js +1 -1
  9. package/lib/req/cds-context.js +1 -1
  10. package/lib/serve/factory.js +1 -2
  11. package/lib/serve/index.js +1 -1
  12. package/lib/utils/index.js +10 -1
  13. package/libx/_runtime/cds-services/adapter/odata-v4/OData.js +3 -2
  14. package/libx/_runtime/cds-services/adapter/odata-v4/handlers/action.js +18 -3
  15. package/libx/_runtime/cds-services/adapter/odata-v4/handlers/create.js +7 -7
  16. package/libx/_runtime/cds-services/adapter/odata-v4/handlers/request.js +1 -1
  17. package/libx/_runtime/cds-services/adapter/odata-v4/handlers/update.js +7 -6
  18. package/libx/_runtime/cds-services/adapter/odata-v4/utils/handlerUtils.js +2 -6
  19. package/libx/_runtime/cds-services/adapter/odata-v4/utils/readAfterWrite.js +7 -2
  20. package/libx/_runtime/common/constants/events.js +1 -3
  21. package/libx/_runtime/fiori/generic/activate.js +0 -4
  22. package/libx/_runtime/fiori/generic/edit.js +1 -9
  23. package/libx/_runtime/fiori/generic/new.js +3 -17
  24. package/libx/_runtime/fiori/generic/patch.js +6 -7
  25. package/libx/_runtime/fiori/generic/prepare.js +11 -18
  26. package/libx/_runtime/fiori/generic/read.js +11 -1
  27. package/libx/_runtime/fiori/utils/handler.js +0 -17
  28. package/libx/_runtime/messaging/AMQPWebhookMessaging.js +18 -19
  29. package/libx/_runtime/messaging/file-based.js +1 -0
  30. package/libx/_runtime/remote/utils/client.js +6 -2
  31. package/libx/odata/grammar.pegjs +4 -1
  32. package/libx/odata/parser.js +1 -1
  33. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,37 @@
4
4
  - The format is based on [Keep a Changelog](http://keepachangelog.com/).
5
5
  - This project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
+ ## Version 6.0.4 - 2022-07-20
8
+
9
+ ### Fixed
10
+
11
+ - Local mocking of external services using `cds watch`
12
+
13
+ ## Version 6.0.3 - 2022-07-14
14
+
15
+ ### Changed
16
+
17
+ - On Business Application Studio, `@sap/cds` now rejects starting on Node 12, as it does locally. This avoids cryptic follow-up errors.
18
+
19
+ ### Fixed
20
+
21
+ - Generic handlers for draft-related operations will trigger a READ event afterwards
22
+ - `file-based-messaging` only watches the file when at least one handler is registered
23
+ - `--vap-file` parameter of `cds deploy` is available again
24
+ - `cds build` no longer throws an error if `@sap/cds-mtx` library (classic MTX) isn't installed locally.
25
+ - `cds.spawn` no longer tries to reuse a transaction
26
+ - Custom query parameter caused bad request on certain characters in rest adapter
27
+ - `cds-ts` no longer fails with an `ERR_UNKNOWN_FILE_EXTENSION` error
28
+ - Timeouts when sending string payloads to remote services
29
+ - `cds.context.http` for `$batch` using atomicity groups
30
+
31
+ ## Version 6.0.2 - 2022-07-06
32
+
33
+ ### Fixed
34
+
35
+ - Jest tests do not fail any longer because of logs during app shutdown
36
+ - `cds build` now uses correct `mtx/sidecar` context. This avoids redundant `cds-mtxs` npm dependency for Java projects.
37
+
7
38
  ## Version 6.0.1 - 2022-07-05
8
39
 
9
40
  ### Added
@@ -5,6 +5,7 @@ const BuildTaskHandlerInternal = require('../buildTaskHandlerInternal')
5
5
  const NodeCfModuleBuilder = require('../nodejs')
6
6
  const ResourcesTarProvider = require('../mtx/resourcesTarBuilder')
7
7
  const { INFO } = require('../buildTaskHandlerInternal')
8
+ const { relativePaths } = require('@sap/cds/bin/build/util')
8
9
 
9
10
  const DEFAULT_MAIN_FOLDER = "_main"
10
11
 
@@ -20,47 +21,50 @@ class MtxSidecarModuleBuilder extends NodeCfModuleBuilder {
20
21
  }
21
22
  }
22
23
 
24
+ /**
25
+ * Builds the mtx sidecar app consisting of:
26
+ * - nodejs app model defined by the required sidecar services
27
+ * - main app model defined by the build task's model options including feature models and resources TAR
28
+ *
29
+ * build.target=".": 'dest' -> 'model-provider/gen'
30
+ * build.target="gen": 'dest' -> 'gen/model-provider'
31
+ */
23
32
  async build() {
24
- // Sidecar scenario: model-provider is implemented as separate Nodejs app.
25
- // Create resources TAR AND and compiled CSN(s) for the sidecar app.
26
- // build.target=".": 'dest' -> 'model-provider/gen'
27
- // build.target="gen": 'dest' -> 'gen/model-provider'
33
+ // nodejs app parts have to be built using sidecar env
28
34
  const sidecarEnv = this.env.for("cds", this.task.src)
29
-
30
- // 1. build node application
31
- await this._buildNodeApp(sidecarEnv)
32
-
33
- // 2. build main application
35
+ // build main application
34
36
  await this._buildMainApp(sidecarEnv)
37
+ // build node application
38
+ await this._buildNodeApp(sidecarEnv)
35
39
  }
36
40
 
41
+ /**
42
+ * Builds the mtx sidecar nodejs app parts.
43
+ * @param {object} sidecarEnv cds env based on the sidecar dir
44
+ */
37
45
  async _buildNodeApp(sidecarEnv) {
38
- const sources = []
39
- for (const name in sidecarEnv.requires) {
40
- const service = sidecarEnv.requires[name]
41
- if (service.model) {
42
- sources.push(service.model)
43
- }
44
- }
45
- const model = await this.cds.load(sources, this.options)
46
46
  const destSidecar = this.task.dest
47
47
  const destSidecarSrc = path.join(destSidecar, this.env.folders.srv)
48
-
48
+ const model = this._compileSidecarSync(sidecarEnv)
49
49
  await this.compileToJson(model, destSidecarSrc)
50
50
  await this.collectLanguageBundles(model, destSidecarSrc)
51
51
  await this._copyProjectRootContent(this.task.src, destSidecar)
52
52
  }
53
53
 
54
+ /**
55
+ * Builds the main app parts containing base model CSN with feature CSNs and resources TAR.
56
+ * @param {object} sidecarEnv cds env based on the sidecar dir
57
+ */
54
58
  async _buildMainApp(sidecarEnv) {
55
59
  let main = sidecarEnv.requires['cds.xt.ModelProviderService']?.root
56
60
  if (!main) {
57
- throw new Error("Invalid sidecar configuration - model-provider.root configuration missing")
61
+ throw new Error("Invalid sidecar configuration - {\"model-provider\": \"in-sidecar\"} configuration missing")
58
62
  }
59
63
  const profiles = this.env.get("profiles") || []
60
64
  if (!profiles.includes("production") && !profiles.includes("prod")) {
61
65
  main = DEFAULT_MAIN_FOLDER
62
66
  // root should represent the production use case and not development
63
- this.pushMessage(`Sidecar main application build results are created in folder '${main}'. Use the 'production' profile if the folder is configured differently.`, INFO)
67
+ this.pushMessage(`Sidecar main application build results are created in folder '${main}'. Enable the 'production' or 'prod' profile if the folder is configured differently.`, INFO)
64
68
  }
65
69
  const destRoot = this.task.dest
66
70
  const destMain = path.join(destRoot, main)
@@ -76,5 +80,31 @@ class MtxSidecarModuleBuilder extends NodeCfModuleBuilder {
76
80
  // resources are determined based on available database build task, SQLite as fallback
77
81
  await new ResourcesTarProvider(this).writeTar(destMain, csn)
78
82
  }
83
+
84
+ /**
85
+ * Synchronous compilation using the sidecar context.
86
+ * @param {object} sidecarEnv cds env based on the sidecar dir
87
+ * @returns the compiled mtx sidecar CSN
88
+ */
89
+ _compileSidecarSync(sidecarEnv) {
90
+ const env = this.env
91
+ try {
92
+ this.cds.root = this.task.src
93
+ this.cds.env = sidecarEnv
94
+ let modelPaths = this.cds.resolve('*', false)
95
+ modelPaths = this.cds.resolve(modelPaths)
96
+ if (!modelPaths || modelPaths.length === 0) {
97
+ throw new Error("No model found for MTX sidecar app")
98
+ }
99
+ this._logger._debug && this._logger.debug(`sidecar model: ${relativePaths(this.buildOptions.root, modelPaths).join(", ")}`)
100
+
101
+ // synchronous compilation
102
+ return this.cds.load(modelPaths, { sync: true, ...this.options() })
103
+ } finally {
104
+ // restore project scope
105
+ this.cds.root = this.buildOptions.root
106
+ this.cds.env = env
107
+ }
108
+ }
79
109
  }
80
110
  module.exports = MtxSidecarModuleBuilder
package/bin/build/util.js CHANGED
@@ -124,11 +124,13 @@ function _redacted(cred) {
124
124
  * @returns
125
125
  */
126
126
  function isStreamlinedMtx(cds) {
127
- if (process.env.OLD_MTX) return false
128
- return !cds.mtx && (cds.env.get("requires.toggles") !== undefined
127
+ if (hasOptionValue(process.env.OLD_MTX, true)) {
128
+ return false
129
+ }
130
+ return (cds.env.get("requires.toggles")
129
131
  || cds.env.requires['cds.xt.ModelProviderService']
130
- || cds.env.get("requires.multitenancy.streamlined") === true
131
- || (typeof cds.env.get("requires.multitenancy") === "object" && cds.env.get("requires.multitenancy.streamlined") === undefined))
132
+ || (typeof cds.env.get("requires.multitenancy") === "object")
133
+ ) && !(() => { try { return cds.mtx } catch (e) { /**/ } })()
132
134
  }
133
135
 
134
136
  class BuildMessage extends Error {
@@ -35,7 +35,12 @@ class HanaDeployer {
35
35
  this.logger = logger;
36
36
 
37
37
  this.logger.log(`${bold('Starting deploy to SAP HANA ...')}`);
38
- if (bindCallback) {
38
+ if (vcapFile) {
39
+ this.logger.log();
40
+ this.logger.log(`Using VCAP_SERVICES from file ${vcapFile} (beta feature).`);
41
+ bindCallback = null // credentials are given - no cds bind then
42
+ }
43
+ else if (bindCallback) {
39
44
  this.logger.log('Using cds bind');
40
45
  }
41
46
  this.logger.log();
@@ -46,8 +51,6 @@ class HanaDeployer {
46
51
 
47
52
  let vcapServices;
48
53
  if (vcapFile) {
49
- this.logger.log();
50
- this.logger.log(`Using vcap file ${vcapFile} (beta feature).`);
51
54
  vcapServices = await this._loadVCAPServices(vcapFile);
52
55
  }
53
56
 
package/bin/serve.js CHANGED
@@ -203,7 +203,7 @@ async function serve (all=[], o={}) { // NOSONAR
203
203
  const shutdown = async sig => {
204
204
  if (shutdownCalled) return
205
205
  shutdownCalled = true
206
- global.jest || cds.watched || console.log() // blank line makes the ^C look pretty in terminals
206
+ global.it || cds.watched || console.log() // blank line makes the ^C look pretty in terminals
207
207
  debug && debug(`${sig}, shutting down, calling ${cds.listeners('shutdown').length} listeners`)
208
208
  await Promise.all(cds.listeners('shutdown').map((fn) => fn()))
209
209
  if (process.env.NODE_ENV !== 'test' && !global.it) process.exit()
@@ -225,7 +225,7 @@ async function _local_server_js() {
225
225
  let server_js = process.env.CDS_TYPESCRIPT && _local('server.ts') || _local('server.js')
226
226
  if (server_js) {
227
227
  log ('Loading server from', { file: local(server_js) })
228
- let fn = await _import(server_js)
228
+ let fn = await cds.utils._import(server_js)
229
229
  if (fn && fn.default) fn = fn.default // default ESM export
230
230
  return typeof fn === 'function' ? fn : cds.server
231
231
  }
@@ -320,14 +320,6 @@ function _with_mocks (o) {
320
320
  }
321
321
  }
322
322
 
323
- const { pathToFileURL } = require('url') // on Windows, must use a file: URL for ESM import
324
- function _import(filePath) {
325
- return typeof jest !== 'undefined'
326
- ? require(filePath)
327
- : import (pathToFileURL(filePath).href)
328
- }
329
-
330
-
331
323
  const SECRETS = /(password)|(certificate)|(ca)|(secret)|(key)/i // 'certificate' and 'ca' on HANA
332
324
  /** mascades password-like strings, also reducing clutter in output */
333
325
  function _redacted(cred) {
package/lib/deploy.js CHANGED
@@ -124,8 +124,7 @@ exports.init = (db, csn=db.model, log=()=>{}) => db.tx (async tx => {
124
124
  const resources = await exports.resources(csn), inits=[]
125
125
  for (let [file,e] of Object.entries(resources)) {
126
126
  if (e === '*') { // init.js/ts
127
- const { pathToFileURL } = require('url') // on Windows, must use a file: URL for ESM import
128
- let x = typeof jest !== 'undefined' ? require(file) : await import(pathToFileURL(file).href); if (!x) continue
127
+ let x = await cds.utils._import(file); if (!x) continue
129
128
  if (x.default) x = x.default // default ESM export
130
129
  inits.push (!x.then && typeof x === 'function' ? x(db,csn) : x)
131
130
  log (file)
@@ -193,6 +193,7 @@ const _mtx_services = {
193
193
  },
194
194
  "cds.xt.SaasProvisioningService": {
195
195
  model: "@sap/cds-mtxs/srv/cf/saas-provisioning-service",
196
+ kind: "saas-registry",
196
197
  },
197
198
  "cds.xt.DeploymentService": {
198
199
  model: "@sap/cds-mtxs/srv/deployment-service",
package/lib/index.js CHANGED
@@ -135,7 +135,7 @@ _global ('ql','SELECT','INSERT','UPDATE','DELETE','CREATE','DROP')
135
135
  _global ('parse','CDL','CQL','CXL')
136
136
 
137
137
  // Check Node.js version
138
- if (process.env.CDS_STRICT_NODE_VERSION !== 'false' && !process.env['WORKSPACE_ID']) { // FIXME remove as soon as BAS is ready for the Node version check below
138
+ if (process.env.CDS_STRICT_NODE_VERSION !== 'false') {
139
139
  const v = version => { let vv = version.split('.'); return { version, major: +vv[0], minor: +vv[1] }}
140
140
  const required = v('14.15'), given = v(process.version.match(/^v(\d+\.\d+)/)[1])
141
141
  if (given.major < required.major || given.major === required.major && given.minor < required.minor) process.exit (process.stderr.write (`
@@ -30,7 +30,7 @@ module.exports = new class extends AsyncLocalStorage {
30
30
  if (typeof o === 'function') [fn,o] = [o,fn] //> for compatibility
31
31
  if (o instanceof EventContext) throw cds.error `The passed options must not be an instance of cds.EventContext.`
32
32
  const fx = ()=>{
33
- const tx = cds.tx(o) // create a new detached transaction for each run of the background job
33
+ const tx = cds.tx({...o}) // create a new detached transaction for each run of the background job
34
34
  return cds._context.run (tx, ()=> Promise.resolve(fn(tx))
35
35
  .then (tx.commit, e => tx.rollback(_error(e, cds)))
36
36
  .then (res => Promise.all(em.listeners('succeeded').map(each => each(res))))
@@ -1,4 +1,3 @@
1
- const { pathToFileURL } = require('url') // on Windows, must use a file: URL for ESM import
2
1
  const cds = require('..'), { path, isfile } = cds.utils
3
2
  const paths = Array.from (new Set ([ cds.root, ...require.resolve.paths('x') ]))
4
3
  const DEBUG = cds.debug('srv.factory'); DEBUG && DEBUG ({ 'cds.root':cds.root, paths })
@@ -48,7 +47,7 @@ const _require = (it,d) => {
48
47
  }
49
48
  }
50
49
  DEBUG && DEBUG({resolved})
51
- return typeof jest !== 'undefined' ? require(resolved) : import(pathToFileURL(resolved).href)
50
+ return cds.utils._import(resolved)
52
51
  }
53
52
 
54
53
  const _function = (impl) => !_is_class(impl) ? impl : (srv) => {
@@ -63,7 +63,7 @@ module.exports = function cds_serve (som, _options) { // NOSONAR
63
63
  // skip all services marked to be ignored
64
64
  d['@cds.ignore'] || d['@cds.serve.ignore'] ||
65
65
  // skip external services, unless asked to mock them and unbound
66
- d['@cds.external'] || required[d.name]?.external && (!o.mocked || required[d.name].credentials)
66
+ (d['@cds.external'] || required[d.name]?.external) && (!o.mocked || required[d.name].credentials)
67
67
  ))
68
68
  if (services.length > 1 && o.at) {
69
69
  throw cds.error `You cannot specify 'path' for multiple services`
@@ -1,5 +1,5 @@
1
1
  const cwd = process.env._original_cwd || process.cwd()
2
- const path = require ('path'), { dirname, join, resolve, sep, relative } = path
2
+ const path = require ('path'), { dirname, extname, join, resolve, sep, relative } = path
3
3
  const fs = require('fs')
4
4
  const cds = require('../index')
5
5
 
@@ -131,6 +131,15 @@ exports.find = function find (base, patterns='*', filter=()=>true) {
131
131
  return files
132
132
  }
133
133
 
134
+ // internal utility to load a file through ESM or CommonJs. TODO find a better place.
135
+ const { pathToFileURL } = require('url')
136
+ exports._import = async function(filePath) {
137
+ return typeof jest !== 'undefined' || extname(filePath) === '.ts' // ts-node w/ ESM not working (cap/issues#11980)
138
+ ? require(filePath)
139
+ : import (pathToFileURL(filePath).href) // on Windows, must use a file: URL for ESM import
140
+ }
141
+
142
+
134
143
  /** @type <T>(o,p,v:T) => T */
135
144
  const $set = (o,p,v) => { Object.defineProperty(o,p,{value:v}); return v }
136
145
  const { mkdirp, isdir } = exports
@@ -162,10 +162,11 @@ class OData {
162
162
  const txs = (data.txs = data.txs || {})
163
163
  const {
164
164
  req: { user },
165
- req
165
+ req,
166
+ res
166
167
  } = data
167
168
  // REVISIT: _model should not be necessary
168
- const tx = (txs[odataContext.id] = cdsService.tx({ user, req, _model: cdsService.model }))
169
+ const tx = (txs[odataContext.id] = cdsService.tx({ user, req, res, _model: cdsService.model }))
169
170
  cds.context = tx.context
170
171
  // for collecting results and errors
171
172
  data.results = data.results || {}
@@ -7,16 +7,16 @@ const {
7
7
  } = require('../okra/odata-server')
8
8
 
9
9
  const { getSapMessages } = require('../../../../common/error/frontend')
10
- const { getActionOrFunctionReturnType } = require('../utils/handlerUtils')
10
+ const { getActionOrFunctionReturnType, isReturnMinimal } = require('../utils/handlerUtils')
11
11
  const { validateResourcePath } = require('../utils/request')
12
12
  const { toODataResult, postProcess } = require('../utils/result')
13
- const { DRAFT_MOD_EVENTS } = require('../../../../common/constants/events')
13
+ const { DRAFT_EVENTS } = require('../../../../common/constants/events')
14
14
  const { readAfterWrite } = require('../utils/readAfterWrite')
15
15
 
16
16
  const _postProcess = async (req, odataReq, odataRes, tx, result) => {
17
17
  const returnType = getActionOrFunctionReturnType(odataReq.getUriInfo().getPathSegments(), tx.model.definitions)
18
18
  // as of spec meeting: no generic support of $select/$expand for custom actions/functions
19
- if (returnType && returnType.kind === 'entity' && req.event in DRAFT_MOD_EVENTS) {
19
+ if (returnType && returnType.kind === 'entity' && (req.event in DRAFT_EVENTS || req.event === 'EDIT')) {
20
20
  result = await readAfterWrite(req, tx, { operation: { result, returnType } })
21
21
  if (result && !('IsActiveEntity' in result)) result.IsActiveEntity = req.event === 'draftActivate'
22
22
  }
@@ -59,6 +59,21 @@ const action = service => {
59
59
  } else {
60
60
  await tx.commit(result)
61
61
  }
62
+
63
+ if (isReturnMinimal(req) || result === null) odataRes.setStatusCode(204)
64
+ else if (req.event === 'draftActivate' || req.event === 'EDIT') {
65
+ odataRes.setStatusCode(201)
66
+ const keys = Object.keys(req.target.keys).filter(k => {
67
+ return k !== 'IsActiveEntity' && !req.target.keys[k]._isAssociationStrict
68
+ })
69
+ const keysString = keys.map(key => `${key}=${result[key]}`).join(',')
70
+ odataRes.setHeader(
71
+ 'location',
72
+ `../${req.target.name.replace(`${service.name}.`, '')}(${keysString},IsActiveEntity=${
73
+ req.event === 'draftActivate'
74
+ })`
75
+ )
76
+ }
62
77
  } catch (e) {
63
78
  err = e
64
79
 
@@ -38,15 +38,15 @@ const create = service => {
38
38
  try {
39
39
  result = await tx.dispatch(req)
40
40
 
41
- // REVISIT: Return post processing once we implement srv read after write
41
+ // REVISIT:
42
+ // Performance: For `isReturnMinimal` it's enough to just read the etag.
43
+ // Note: Without read access, one cannot return the etag.
44
+ if (req._.readAfterWrite) {
45
+ result = await readAfterWrite(req, service, { operation: { result } })
46
+ }
42
47
  if (isReturnMinimal(req)) {
43
48
  result = postProcessMinimal(req, service, result)
44
49
  } else {
45
- // REVISIT: find better solution
46
- if (req._.readAfterWrite) {
47
- result = await readAfterWrite(req, service)
48
- }
49
-
50
50
  postProcess(req, odataRes, service, result)
51
51
  }
52
52
 
@@ -57,7 +57,7 @@ const create = service => {
57
57
  await tx.commit(result)
58
58
  }
59
59
 
60
- if (isReturnMinimal(req)) {
60
+ if (isReturnMinimal(req) || result === null) {
61
61
  odataRes.setStatusCode(204)
62
62
  }
63
63
  } catch (e) {
@@ -51,7 +51,7 @@ module.exports = srv => {
51
51
  })
52
52
  }
53
53
 
54
- odataReq.setApplicationData({ req })
54
+ odataReq.setApplicationData({ req, res })
55
55
  }
56
56
 
57
57
  next()
@@ -149,12 +149,13 @@ const update = service => {
149
149
  // try UPDATE and, on 404 error, try CREATE
150
150
  ;[result, req] = await _updateThenCreate(req, odataReq, odataRes, tx)
151
151
 
152
+ if (!primitive && req._.readAfterWrite) {
153
+ // REVISIT:
154
+ // Performance: For `isReturnMinimal` it's enough to just read the etag.
155
+ // Note: Without read access, one cannot return the etag.
156
+ result = await readAfterWrite(req, service, { operation: { result } })
157
+ }
152
158
  if (!isReturnMinimal(req)) {
153
- // REVISIT: find better solution
154
- if (!primitive && req._.readAfterWrite) {
155
- result = await readAfterWrite(req, service)
156
- }
157
-
158
159
  postProcess(req, odataRes, service, result, previousResult)
159
160
  } else {
160
161
  result = postProcessMinimal(req, service, result)
@@ -167,7 +168,7 @@ const update = service => {
167
168
  await tx.commit(result)
168
169
  }
169
170
 
170
- if (isReturnMinimal(req)) {
171
+ if (isReturnMinimal(req) || result === null) {
171
172
  odataRes.setStatusCode(204)
172
173
  }
173
174
  } catch (e) {
@@ -16,9 +16,7 @@ const _keysOf = (row, target) => {
16
16
  if (!keyElements.length) return
17
17
  const keys = {}
18
18
  for (const key of keyElements) {
19
- if (key._isAssociationStrict || key.name in DRAFT_COLUMNS_MAP) {
20
- continue
21
- }
19
+ if (key._isAssociationStrict) continue
22
20
  keys[key.name] = key.elements ? { val: JSON.stringify(row[key.name]) } : row[key.name]
23
21
  }
24
22
  return keys
@@ -111,10 +109,8 @@ const _getColumns = (target, data, prefix = []) => {
111
109
  * (depth determined by req.data)
112
110
  */
113
111
  const getDeepSelect = req => {
114
- // REVISIT: Why do we do such expensive deep reads after write at all ???
115
- const { target, data } = req
112
+ let { target, data } = req
116
113
  const columns = _getColumns(target, data)
117
-
118
114
  return getSimpleSelectCQN(target, data, columns)
119
115
  }
120
116
 
@@ -1,3 +1,4 @@
1
+ const { removeDraftUUIDIfNecessary } = require('../../../../fiori/utils/handler')
1
2
  const cds = require('../../../../cds')
2
3
  const {
3
4
  Request,
@@ -8,7 +9,7 @@ const { normalizeError } = require('../../../../common/error/frontend')
8
9
 
9
10
  const { getDeepSelect, getSimpleSelectCQN } = require('./handlerUtils')
10
11
  const { hasDeepUpdate } = require('../../../../common/composition/update')
11
- const { WRITE_EVENTS, CDS_EVENTS, DRAFT_MOD_EVENTS } = require('../../../../common/constants/events')
12
+ const { WRITE_EVENTS, CDS_EVENTS } = require('../../../../common/constants/events')
12
13
 
13
14
  const setLocationHeader = (req, { model }) => {
14
15
  const { odataRes } = req._
@@ -38,7 +39,7 @@ const _getOperationQueryColumns = urlQueryOptions => {
38
39
  return columns
39
40
  }
40
41
 
41
- const _isDraftAction = req => req.event in DRAFT_MOD_EVENTS
42
+ const _isDraftAction = req => req.event in { draftActivate: 1, EDIT: 1, draftPrepare: 1 }
42
43
  const _isActionOrFunction = req => !(req.event in CDS_EVENTS) || _isDraftAction(req)
43
44
  const _isWriteWithResponse = req => req.event in WRITE_EVENTS && !(req.event in { CANCEL: 1, DELETE: 1 })
44
45
 
@@ -49,6 +50,9 @@ const readAfterWrite = async (req, srv, { operation, isBefore } = { isBefore: fa
49
50
  const { result, returnType } = operation
50
51
  query = getSimpleSelectCQN(returnType, result, _getOperationQueryColumns(req._queryOptions))
51
52
  if (_isDraftAction(req)) query.where({ IsActiveEntity: req.event === 'draftActivate' })
53
+ } else if (req.event === 'NEW' || req.event === 'PATCH') {
54
+ const { result } = operation
55
+ query = getSimpleSelectCQN(req.target, result)
52
56
  } else if (req.event === 'UPDATE' && !hasDeepUpdate(srv.model, req.query)) {
53
57
  query = Array.isArray(req.data) ? SELECT.from(req.query.UPDATE.entity) : SELECT.one(req.query.UPDATE.entity)
54
58
  } else {
@@ -60,6 +64,7 @@ const readAfterWrite = async (req, srv, { operation, isBefore } = { isBefore: fa
60
64
  try {
61
65
  const _req = new Request({ query, event: 'READ', _: req._ })
62
66
  result = await srv.dispatch(_req)
67
+ if (result && req.target._isDraftEnabled) removeDraftUUIDIfNecessary(req)(result)
63
68
  if (result === null && !isBefore && (_isWriteWithResponse(req) || _isDraftAction(req))) {
64
69
  // > something must be written and no READ error <=> @restrict or static where
65
70
  _req.reject({
@@ -2,7 +2,6 @@ const MOD_EVENTS = { UPDATE: 1, DELETE: 1, EDIT: 1 }
2
2
  const WRITE_EVENTS = Object.assign({ CREATE: 1, NEW: 1, PATCH: 1, CANCEL: 1 }, MOD_EVENTS)
3
3
  const CRUD_EVENTS = Object.assign({ READ: 1 }, WRITE_EVENTS)
4
4
  const DRAFT_EVENTS = { PATCH: 1, CANCEL: 1, draftActivate: 1, draftPrepare: 1 }
5
- const DRAFT_MOD_EVENTS = { draftActivate: 1, EDIT: 1 }
6
5
  const CDS_EVENTS = Object.assign({}, CRUD_EVENTS, DRAFT_EVENTS)
7
6
 
8
7
  module.exports = {
@@ -10,6 +9,5 @@ module.exports = {
10
9
  WRITE_EVENTS,
11
10
  CRUD_EVENTS,
12
11
  DRAFT_EVENTS,
13
- CDS_EVENTS,
14
- DRAFT_MOD_EVENTS
12
+ CDS_EVENTS
15
13
  }
@@ -11,7 +11,6 @@ const {
11
11
  const { readAndDeleteKeywords, isActiveEntityRequested, getKeyData } = require('../utils/where')
12
12
  const { isDraftRootEntity } = require('../../fiori/utils/csn')
13
13
  const { getColumns } = require('../../cds-services/services/utils/columns')
14
- const { setStatusCodeAndHeader, getKeyProperty } = require('../utils/handler')
15
14
 
16
15
  const { DRAFT_COLUMNS_MAP } = require('../../common/constants/draft')
17
16
 
@@ -175,9 +174,6 @@ const _handler = async function (req) {
175
174
  })
176
175
  ])
177
176
 
178
- const k = getKeyProperty(req.target.keys)
179
- setStatusCodeAndHeader(req._.odataRes, { [k]: result[k] }, req.target.name.replace(`${this.name}.`, ''), true)
180
-
181
177
  return result
182
178
  }
183
179
 
@@ -4,14 +4,7 @@ const { INSERT, SELECT, DELETE } = cds.ql
4
4
  const { getCompositionTree } = require('../../common/composition')
5
5
  const { getColumns } = require('../../cds-services/services/utils/columns')
6
6
  const { getTransition } = require('../../common/utils/resolveView')
7
- const {
8
- draftIsLocked,
9
- ensureDraftsSuffix,
10
- ensureNoDraftsSuffix,
11
- getSubCQNs,
12
- setStatusCodeAndHeader,
13
- filterKeys
14
- } = require('../utils/handler')
7
+ const { draftIsLocked, ensureDraftsSuffix, ensureNoDraftsSuffix, getSubCQNs, filterKeys } = require('../utils/handler')
15
8
  const { isActiveEntityRequested, getKeyData } = require('../utils/where')
16
9
 
17
10
  const _getDraftColumns = draftUUID => ({
@@ -163,7 +156,6 @@ const _handler = async function (req) {
163
156
  }
164
157
 
165
158
  await Promise.all(insertCQNs.map(CQN => dbtx.run(CQN)))
166
- setStatusCodeAndHeader(req._.odataRes, rootWhere, req.target.name.replace(`${this.name}.`, ''), false)
167
159
  return results[0][0]
168
160
  }
169
161
 
@@ -4,7 +4,7 @@ const { INSERT, SELECT, UPDATE } = cds.ql
4
4
  const onDraftActivate = require('./activate')._handler
5
5
  const { isNavigationToMany } = require('../utils/req')
6
6
  const { getKeysCondition } = require('../utils/where')
7
- const { removeDraftUUIDIfNecessary, ensureDraftsSuffix } = require('../utils/handler')
7
+ const { ensureDraftsSuffix } = require('../utils/handler')
8
8
  const { DRAFT_COLUMNS_MAP } = require('../../common/constants/draft')
9
9
 
10
10
  const _getUpdateDraftAdminCQN = ({ user, timestamp }, draftUUID) => {
@@ -74,26 +74,12 @@ const _handler = async function (req, next) {
74
74
  : _getInsertDraftAdminCQN(req, req.data.DraftAdministrativeData_DraftUUID)
75
75
  const insertDataCQN = _getInsertDataCQN(req, req.data.DraftAdministrativeData_DraftUUID)
76
76
 
77
- // read data as on db and return
78
- const columns = Object.keys(req.target.elements)
79
- .map(e => req.target.elements[e])
80
- .filter(e => !e.isAssociation)
81
- .map(e => e.name)
82
- const readInsertDataCQN = SELECT.from(insertDataCQN.INSERT.into).columns(columns)
83
- readInsertDataCQN.where(getKeysCondition(req.target, req.data))
84
-
85
77
  const dbtx = cds.tx(req)
86
78
 
87
79
  await Promise.all([dbtx.run(adminDataCQN), dbtx.run(insertDataCQN)])
88
80
 
89
- const result = await dbtx.run(readInsertDataCQN)
90
- if (result.length === 0) {
91
- req.reject(404)
92
- }
93
-
94
- removeDraftUUIDIfNecessary(req)(result[0])
95
-
96
- return result[0]
81
+ req._.readAfterWrite = true
82
+ return { ...req.data, IsActiveEntity: false }
97
83
  }
98
84
 
99
85
  module.exports = cds.service.impl(function (srv, entity) {
@@ -29,7 +29,7 @@ const _getSelectCQN = (model, { target: { name } }, keysCondition, checkUser = t
29
29
  }
30
30
 
31
31
  // REVISIT: support navigation to one
32
- return SELECT.from(draftName)
32
+ return SELECT.one(draftName)
33
33
  .columns(columns)
34
34
  .join('DRAFT.DraftAdministrativeData')
35
35
  .on([
@@ -71,19 +71,18 @@ const _handler = async function (req) {
71
71
  let result = await dbtx.run(_getSelectCQN(this.model, req, keysCondition))
72
72
 
73
73
  // Potential timeout scenario supported
74
- if (result[0].draftAdmin_inProcessByUser && result[0].draftAdmin_inProcessByUser !== req.user.id) {
74
+ if (result.draftAdmin_inProcessByUser && result.draftAdmin_inProcessByUser !== req.user.id) {
75
75
  // REVISIT: security log?
76
76
  req.reject(403)
77
77
  }
78
78
 
79
79
  const updateDraftCQN = _getUpdateDraftCQN(req, keysCondition)
80
- const updateDraftAdminCQN = getUpdateDraftAdminCQN(req, result[0].DraftAdministrativeData_DraftUUID)
80
+ const updateDraftAdminCQN = getUpdateDraftAdminCQN(req, result.DraftAdministrativeData_DraftUUID)
81
81
 
82
82
  await Promise.all([dbtx.run(updateDraftCQN), dbtx.run(updateDraftAdminCQN)])
83
- result = await dbtx.run(_getSelectCQN(this.model, req, keysCondition, false))
84
- if (result.length === 0) req.reject(404)
85
- removeDraftUUIDIfNecessary(req)(result[0])
86
- return result[0]
83
+ req._.readAfterWrite = true
84
+
85
+ return { ...req.data, IsActiveEntity: false }
87
86
  }
88
87
 
89
88
  module.exports = cds.service.impl(function (srv, entity) {
@@ -5,8 +5,6 @@ const { isActiveEntityRequested } = require('../utils/where')
5
5
  const { ensureDraftsSuffix, ensureNoDraftsSuffix } = require('../utils/handler')
6
6
  const { getColumns } = require('../../cds-services/services/utils/columns')
7
7
 
8
- const { DRAFT_COLUMNS_CQN } = require('../../common/constants/draft')
9
-
10
8
  /**
11
9
  * Generic Handler for PreparationAction requests.
12
10
  * In case of success it returns the prepared draft entry.
@@ -19,15 +17,14 @@ const _handler = async function (req) {
19
17
  }
20
18
 
21
19
  const target = ensureDraftsSuffix(req.target.name)
22
- const columns = [
23
- ...getColumns(this.model.definitions[ensureNoDraftsSuffix(req.target.name)], {
24
- removeIgnore: true,
25
- filterVirtual: true
26
- }).map(obj => obj.name),
27
- ...DRAFT_COLUMNS_CQN.filter(column => column.ref[0] !== 'DraftAdministrativeData_DraftUUID')
28
- ]
20
+ const columns = getColumns(this.model.definitions[ensureNoDraftsSuffix(req.target.name)], {
21
+ keysOnly: true,
22
+ removeIgnore: true,
23
+ filterVirtual: true,
24
+ onlyNames: true
25
+ })
29
26
  columns.push({ ref: ['DRAFT.DraftAdministrativeData', 'inProcessByUser'], as: 'draftAdmin_inProcessByUser' })
30
- const select = SELECT.from(target)
27
+ const select = SELECT.one(target)
31
28
  .columns(columns)
32
29
  .join('DRAFT.DraftAdministrativeData')
33
30
  .on([
@@ -36,18 +33,14 @@ const _handler = async function (req) {
36
33
  { ref: ['DRAFT.DraftAdministrativeData', 'DraftUUID'] }
37
34
  ])
38
35
  .where(req.query.SELECT.from.ref[0].where)
39
-
40
36
  const result = await cds.tx(req).run(select)
41
-
42
- if (result.length === 0) req.reject(404)
43
-
44
- if (result[0].draftAdmin_inProcessByUser !== req.user.id) {
37
+ if (!result) req.reject(404)
38
+ if (result.draftAdmin_inProcessByUser !== req.user.id) {
45
39
  // REVISIT: security log?
46
40
  req.reject(403, 'DRAFT_LOCKED_BY_ANOTHER_USER')
47
41
  }
48
- delete result[0].draftAdmin_inProcessByUser
49
-
50
- return result[0]
42
+ delete result.draftAdmin_inProcessByUser
43
+ return result
51
44
  }
52
45
 
53
46
  module.exports = cds.service.impl(function (srv, entity) {
@@ -120,6 +120,11 @@ const DRAFT_COLUMNS_CASTED = [
120
120
  }
121
121
  ]
122
122
 
123
+ const DRAFT_COLUMNS_CASTED_WITH_DRAFTADMIN_UUID = [
124
+ ...DRAFT_COLUMNS_CASTED,
125
+ { ref: ['DraftAdministrativeData_DraftUUID'] }
126
+ ]
127
+
123
128
  // default draft values for active entities
124
129
  const _getDefaultDraftProperties = ({ hasDraft, isActive = true, withDraftUUID = true }) => {
125
130
  const columns = [
@@ -442,7 +447,10 @@ const _activeWithoutDraft = (req, draftWhere, columns) => {
442
447
 
443
448
  const _draftOfWhichIAmOwner = (req, draftWhere, columns) => {
444
449
  const { table, name } = _getTableName(req, true)
445
- const outerMostColumns = _getOuterMostColumns(addColumnAlias(columns, name), DRAFT_COLUMNS_CASTED)
450
+ const outerMostColumns = _getOuterMostColumns(
451
+ addColumnAlias(columns, name),
452
+ DRAFT_COLUMNS_CASTED_WITH_DRAFTADMIN_UUID
453
+ )
446
454
 
447
455
  const cqn = SELECT.from(table)
448
456
  .columns(...outerMostColumns)
@@ -1277,6 +1285,8 @@ const _handler = async function (req) {
1277
1285
  const query4sql = cqn2cqn4sql(req.query, this.model, { _4fiori: true })
1278
1286
 
1279
1287
  // Clone the request. Do not clone with Object.assign as that would skip all non-enumerable properties.
1288
+ // REVISIT: query4sql.clone() doesn't really clone the original query, hence _generateCQN will heavily modify
1289
+ // it, e.g. IsActiveEntity is stripped. This is a problem for subsequent handlers which rely on this information.
1280
1290
  const reqClone = { __proto__: req, query: query4sql.clone() }
1281
1291
  // Clone draft restrictions to the cloned query.
1282
1292
  reqClone.query._draftRestrictions = query._draftRestrictions
@@ -183,15 +183,6 @@ const _aliased = (arr, columns, alias) =>
183
183
  })
184
184
 
185
185
  // Only works for root entity, otherwise the relative position needs to be adapted
186
- const setStatusCodeAndHeader = (response, keys, entityName, isActiveEntity) => {
187
- response.setStatusCode(201)
188
-
189
- const keysString = Object.keys(keys)
190
- .map(key => `${key}=${keys[key]}`)
191
- .join(',')
192
- response.setHeader('location', `../${entityName}(${keysString},IsActiveEntity=${isActiveEntity})`)
193
- }
194
-
195
186
  const removeDraftUUIDIfNecessary = req =>
196
187
  req._.req && req._.req.headers && req._.req.headers['x-cds-odata-version'] === 'v2'
197
188
  ? () => {}
@@ -255,12 +246,6 @@ const draftIsLocked = lastChangedAt => {
255
246
  return DRAFT_CANCEL_TIMEOUT_IN_MS > Date.now() - Date.parse(lastChangedAt)
256
247
  }
257
248
 
258
- const getKeyProperty = keys => {
259
- return Object.keys(keys).find(k => {
260
- return k !== 'IsActiveEntity' && !keys[k]._isAssociationStrict
261
- })
262
- }
263
-
264
249
  const filterKeys = keys => {
265
250
  return Object.keys(keys).filter(key => {
266
251
  return key !== 'IsActiveEntity' && !keys[key]._isAssociationStrict
@@ -273,7 +258,6 @@ module.exports = {
273
258
  getUpdateDraftAdminCQN,
274
259
  getEnrichedCQN,
275
260
  removeDraftUUIDIfNecessary,
276
- setStatusCodeAndHeader,
277
261
  isDraftActivateAction,
278
262
  ensureDraftsSuffix,
279
263
  ensureNoDraftsSuffix,
@@ -282,7 +266,6 @@ module.exports = {
282
266
  proxifyToNoDraftsName,
283
267
  addColumnAlias,
284
268
  replaceRefWithDraft,
285
- getKeyProperty,
286
269
  filterKeys,
287
270
  getDeleteDraftAdminCqn,
288
271
  getCompositionTargets
@@ -38,26 +38,25 @@ class AMQPWebhookMessaging extends MessagingService {
38
38
  }
39
39
 
40
40
  startListening(opt = {}) {
41
- if (this.subscribedTopics.size) {
42
- const management = this.getManagement()
43
- if (!opt.doNotDeploy) this.queued(management.createQueueAndSubscriptions.bind(management))()
44
- this.queued(this.listenToClient.bind(this))(async (_topic, _payload, _other, { done, failed }) => {
45
- const msg = Object.assign(normalizeIncomingMessage(_payload), _other || {})
46
- msg.event = _topic
41
+ if (!this.subscribedTopics.size) return
42
+ const management = this.getManagement()
43
+ if (!opt.doNotDeploy) this.queued(management.createQueueAndSubscriptions.bind(management))()
44
+ this.queued(this.listenToClient.bind(this))(async (_topic, _payload, _other, { done, failed }) => {
45
+ const msg = Object.assign(normalizeIncomingMessage(_payload), _other || {})
46
+ msg.event = _topic
47
47
 
48
- if (!msg._) msg._ = {}
49
- msg._.topic = _topic
50
- try {
51
- await super.emit(msg)
52
- done()
53
- } catch (e) {
54
- // In case of AMQP and Solace, the `failed` callback must be called
55
- // with an error, otherwise there are problems with the redelivery count.
56
- failed(new Error('processing failed'))
57
- this.LOG.error('ERROR occured in asynchronous event processing:', e)
58
- }
59
- })
60
- }
48
+ if (!msg._) msg._ = {}
49
+ msg._.topic = _topic
50
+ try {
51
+ await super.emit(msg)
52
+ done()
53
+ } catch (e) {
54
+ // In case of AMQP and Solace, the `failed` callback must be called
55
+ // with an error, otherwise there are problems with the redelivery count.
56
+ failed(new Error('processing failed'))
57
+ this.LOG.error('ERROR occured in asynchronous event processing:', e)
58
+ }
59
+ })
61
60
  }
62
61
 
63
62
  listenToClient(cb) {
@@ -35,6 +35,7 @@ class FileBasedMessaging extends MessagingService {
35
35
  }
36
36
 
37
37
  startWatching() {
38
+ if (!this.subscribedTopics.size) return
38
39
  const watcher = async () => {
39
40
  if (!(await touched(this.file, this.recent))) return // > not touched since last check
40
41
  // REVISIT: Bad if lock file wasn't cleaned up (due to crashes...)
@@ -450,8 +450,12 @@ const getReqOptions = (req, query, service) => {
450
450
  }
451
451
 
452
452
  if (reqOptions.data && reqOptions.method !== 'GET' && reqOptions.method !== 'HEAD') {
453
- reqOptions.headers['content-type'] = 'application/json'
454
- reqOptions.headers['content-length'] = Buffer.byteLength(JSON.stringify(reqOptions.data))
453
+ if (typeof reqOptions.data === 'object' && !Buffer.isBuffer(reqOptions.data)) {
454
+ reqOptions.headers['content-type'] = 'application/json'
455
+ reqOptions.headers['content-length'] = Buffer.byteLength(JSON.stringify(reqOptions.data))
456
+ } else if (typeof reqOptions.data === 'string' || Buffer.isBuffer(reqOptions.data)) {
457
+ reqOptions.headers['content-length'] = Buffer.byteLength(reqOptions.data)
458
+ }
455
459
  }
456
460
  reqOptions.url = formatPath(reqOptions.url)
457
461
 
@@ -520,7 +520,10 @@
520
520
  }
521
521
  return {apply: mainTransformation}
522
522
  }
523
- custom = [a-zA-Z] [a-zA-Z0-9-]* "=" [^&]*
523
+
524
+ custom
525
+ = [a-zA-Z0-9-_.~]+ "=" [^&]*
526
+
524
527
  format = "$format=" f:$([^&]*) {
525
528
  if (f.toLowerCase() !== "json") {
526
529
  const err = new Error("ONLY_QUERY_PARAM_FORMAT_JSON_ALLOWED")
@@ -1 +1 @@
1
- "use strict";function peg$subclass(r,t){function e(){this.constructor=r}e.prototype=t.prototype,r.prototype=new e}function peg$SyntaxError(r,t,e,n){this.message=r,this.expected=t,this.found=e,this.location=n,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,peg$SyntaxError)}function peg$parse(r,t){t=void 0!==t?t:{};var e,n={},s={ODataRelativeURI:Ye},o=Ye,u="/",a=De("/",!1),c=De("?",!1),i=De("&",!1),f="$count",l=De("$count",!1),h="$ref",p=De("$ref",!1),A="$value",d=De("$value",!1),g=function(r){return[r]},m="=",v=De("=",!1),b="$skiptoken=",y=De("$skiptoken=",!1),C="$select=",w=De("$select=",!1),x="$expand=",E=De("$expand=",!1),$="$filter=",L=De("$filter=",!1),B="$orderby=",S=De("$orderby=",!1),T=function(r,t){os(t)},O="$top=",_=De("$top=",!1),R="$skip=",Z=De("$skip=",!1),j="$search=",N=De("$search=",!1),k="$count=",z=De("$count=",!1),D="$apply=",P=De("$apply=",!1),F=De("*",!1),U=De(";",!1),M="/$count",q=De("/$count",!1),I=function(r){return r?[r]:[]},Y=function(r,t){r.push({xpr:t})},X=function(r,t){r.push({val:t})},J=function(r,t,e){r.push(t,...e)},Q=function(r,t){r.push(t)},W=function(r,t,e){r.push(t,...e)},G=":",H=De(":",!1),K="any",V=De("any",!1),rr="all",tr=De("all",!1),er=De("asc",!1),nr="desc",sr=De("desc",!1),or=function(r,t){return t},ur=/^[a-zA-Z]/,ar=Pe([["a","z"],["A","Z"]],!1,!1),cr=/^[a-zA-Z0-9\-]/,ir=Pe([["a","z"],["A","Z"],["0","9"],"-"],!1,!1),fr=/^[^&]/,lr=Pe(["&"],!0,!1),hr="$format=",pr=De("$format=",!1),Ar=Fe("a comparison"),dr=De("eq",!1),gr=De("ne",!1),mr=De("lt",!1),vr=De("gt",!1),br=De("le",!1),yr=De("ge",!1),Cr=(De("add",!1),De("sub",!1),De("mul",!1),De("div",!1),De("mod",!1),Fe("an operand")),wr=Fe("navigation with $count"),xr=function(r,t){return t},Er=function(r,t){return t?{id:r,where:t}:r},$r=Fe("a reference"),Lr=function(r,t){return t},Br=function(r){return{val:r}},Sr=De("{",!1),Tr=/^[^}]/,Or=Pe(["}"],!0,!1),_r=De("}",!1),Rr="[",Zr=De("[",!1),jr="]",Nr=De("]",!1),kr=/^[^\]]/,zr=Pe(["]"],!0,!1),Dr=Fe("a function call"),Pr=function(r,t,e){return e},Fr=Fe("a boolean function"),Ur="contains",Mr=De("contains",!0),qr="endswith",Ir=De("endswith",!0),Yr="startswith",Xr=De("startswith",!0),Jr=De("NOT",!0),Qr=De("AND",!0),Wr=De("OR",!0),Gr="aggregate",Hr=De("aggregate",!1),Kr="groupby",Vr=De("groupby",!1),rt="filter",tt=De("filter",!1),et="search",nt=De("search",!1),st="concat",ot=De("concat",!1),ut="compute",at=De("compute",!1),ct=De("top",!1),it="skip",ft=De("skip",!1),lt="orderby",ht=De("orderby",!1),pt=De("topcount",!0),At=De("bottomcount",!0),dt=De("topsum",!0),gt=De("bottomsum",!0),mt=De("toppercent",!0),vt=De("bottompercent",!0),bt=function(r,t){return t},yt="with",Ct=De("with",!1),wt="from",xt=De("from",!1),Et=De("as",!1),$t="rollup",Lt=De("rollup",!1),Bt="$all",St=De("$all",!1),Tt=function(r,t){return t},Ot="identity",_t=De("identity",!1),Rt=function(r,t){return t},Zt="true",jt=De("true",!1),Nt="false",kt=De("false",!1),zt=Fe("Edm.String"),Dt="'",Pt=De("'",!1),Ft="''",Ut=De("''",!1),Mt=/^[^']/,qt=Pe(["'"],!0,!1),It='"',Yt=De('"',!1),Xt='\\"',Jt=De('\\"',!1),Qt=/^[^"]/,Wt=Pe(['"'],!0,!1),Gt=/^[^ \t\n()"&;]/,Ht=Pe([" ","\t","\n","(",")",'"',"&",";"],!0,!1),Kt=/^[0-9]/,Vt=Pe([["0","9"]],!1,!1),re="-",te=De("-",!1),ee=De("T",!1),ne=".",se=De(".",!1),oe=De("Z",!1),ue=De("+",!1),ae=/^[+\-]/,ce=Pe(["+","-"],!1,!1),ie=De("e",!1),fe=/^[_a-zA-Z]/,le=Pe(["_",["a","z"],["A","Z"]],!1,!1),he=/^[_a-zA-Z0-9"."]/,pe=Pe(["_",["a","z"],["A","Z"],["0","9"],'"',".",'"'],!1,!1),Ae=/^[0-9a-fA-F]/,de=Pe([["0","9"],["a","f"],["A","F"]],!1,!1),ge=/^[^\/?]/,me=Pe(["/","?"],!0,!1),ve=/^[a-zA-Z0-9\-"."_~!$'()*+,;=:@"\/""?"]/,be=Pe([["a","z"],["A","Z"],["0","9"],"-",'"',".",'"',"_","~","!","$","'","(",")","*","+",",",";","=",":","@",'"',"/",'"','"',"?",'"'],!1,!1),ye="binary'",Ce=De("binary'",!1),we=/^[a-zA-Z0-9\-_]/,xe=Pe([["a","z"],["A","Z"],["0","9"],"-","_"],!1,!1),Ee="==",$e=De("==",!1),Le=De(",",!1),Be=De("(",!1),Se=De(")",!1),Te=Fe("optional whitespaces"),Oe=/^[ \t\n]/,_e=Pe([" ","\t","\n"],!1,!1),Re=Fe("mandatory whitespaces"),Ze=0,je=[{line:1,column:1}],Ne=0,ke=[],ze=0;if("startRule"in t){if(!(t.startRule in s))throw new Error("Can't start parsing from rule \""+t.startRule+'".');o=s[t.startRule]}function De(r,t){return{type:"literal",text:r,ignoreCase:t}}function Pe(r,t,e){return{type:"class",parts:r,inverted:t,ignoreCase:e}}function Fe(r){return{type:"other",description:r}}function Ue(t){var e,n=je[t];if(n)return n;for(e=t-1;!je[e];)e--;for(n={line:(n=je[e]).line,column:n.column};e<t;)10===r.charCodeAt(e)?(n.line++,n.column=1):n.column++,e++;return je[t]=n,n}function Me(r,t){var e=Ue(r),n=Ue(t);return{start:{offset:r,line:e.line,column:e.column},end:{offset:t,line:n.line,column:n.column}}}function qe(r){Ze<Ne||(Ze>Ne&&(Ne=Ze,ke=[]),ke.push(r))}function Ie(r,t,e){return new peg$SyntaxError(peg$SyntaxError.buildMessage(r,t),r,t,e)}function Ye(){var t,e,s,o,f,l,h,p,A,d,g,m,v,b;if(t=Ze,47===r.charCodeAt(Ze)?(e=u,Ze++):(e=n,0===ze&&qe(a)),e===n&&(e=null),e!==n)if(s=Ze,(o=Xe())!==n&&(s,o=void(Yn=o)),(s=o)!==n){if(o=Ze,(f=Pn())!==n)if(63===r.charCodeAt(Ze)?(l="?",Ze++):(l=n,0===ze&&qe(c)),l!==n)if((h=Pn())!==n)if((p=Qe())!==n){for(A=[],d=Ze,(g=Pn())!==n?(38===r.charCodeAt(Ze)?(m="&",Ze++):(m=n,0===ze&&qe(i)),m!==n&&(v=Pn())!==n&&(b=Qe())!==n?d=g=[g,m,v,b]:(Ze=d,d=n)):(Ze=d,d=n);d!==n;)A.push(d),d=Ze,(g=Pn())!==n?(38===r.charCodeAt(Ze)?(m="&",Ze++):(m=n,0===ze&&qe(i)),m!==n&&(v=Pn())!==n&&(b=Qe())!==n?d=g=[g,m,v,b]:(Ze=d,d=n)):(Ze=d,d=n);A!==n?o=f=[f,l,h,p,A]:(Ze=o,o=n)}else Ze=o,o=n;else Ze=o,o=n;else Ze=o,o=n;else Ze=o,o=n;o===n&&(o=null),o!==n&&(f=Pn())!==n?(63===r.charCodeAt(Ze)?(l="?",Ze++):(l=n,0===ze&&qe(c)),l===n&&(l=null),l!==n&&(h=Pn())!==n?(t,t=e=function(){if(Xn)return Yn.columns=[{args:[{val:1}],as:"$count",func:"count"}],delete Yn.expand,delete Yn.limit,delete Yn.orderBy,Yn.apply?rs(Yn,Yn.apply):{SELECT:Yn};let r;if(Yn.expand){Yn.columns||(Yn.columns=["*"],r=!0);for(const r of Yn.expand){const t=Yn.columns.findIndex(Gn(r));t>-1&&Yn.columns.splice(t,1),Yn.columns.push(r)}delete Yn.expand}return Yn.count&&Yn.apply&&(Yn.__countAggregated=!0),Yn.apply?rs(Yn,Yn.apply,r):{SELECT:Yn}}()):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function Xe(){var t,e,s,o,c,i,m,v;return t=Ze,r.substr(Ze,6)===f?(e=f,Ze+=6):(e=n,0===ze&&qe(l)),e!==n&&(t,e=void(Xn=!0)),(t=e)===n&&(t=Ze,e=Ze,r.substr(Ze,4)===h?(s=h,Ze+=4):(s=n,0===ze&&qe(p)),s===n&&(r.substr(Ze,6)===A?(s=A,Ze+=6):(s=n,0===ze&&qe(d))),(e=s!==n?r.substring(e,Ze):s)!==n&&(t,v=e,e=!Jn.includes(v)&&{from:{ref:[v]}}),(t=e)===n&&(t=Ze,e=Ze,(s=Rn())!==n?(o=Ze,(c=zn())!==n&&(i=Dn())!==n?o=c=[c,i]:(Ze=o,o=n),o===n&&(o=Ze,(c=zn())!==n&&(i=Je())!==n&&(m=Dn())!==n?o=c=[c,i,m]:(Ze=o,o=n)),o===n&&(o=null),o!==n?(c=Ze,ze++,i=Nn(),ze--,i===n?c=void 0:(Ze=c,c=n),c!==n?e=s=[s,o,c]:(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n),e===n&&(e=Ze,(s=Nn())!==n&&(e,s=g(s)),e=s),e===n&&(e=null),e!==n?(s=Ze,o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(o,c=c),(o=c)!==n?((c=Xe())===n&&(c=null),c!==n?s=o=[o,c]:(Ze=s,s=n)):(Ze=s,s=n),s===n&&(s=null),s!==n?(t,t=e=function(r,t){if(t=t&&t[1],!r&&!t)return{from:{ref:[""]}};if(!r&&t&&t.from)return t.from.ref.unshift(""),t;const[e,n]=r,s=[];if(n?n.length>2?s.push({id:e,where:n[1].map((r=>r.val&&r.val.match&&r.val.match(/^"(.*)"$/)?{val:r.val.match(/^"(.*)"$/)[1]}:r))}):s.push({id:e,where:[]}):qn?s.push(`${"object"==typeof e&&"val"in e?e.val:e}`):"object"==typeof e&&"string"==typeof e.val&&e.val.match(/^[1-9]\d*$|^0$/)?s.push({val:Qn(e.val)}):s.push(e),t&&t.from){const r=t.from.ref;Object.prototype.hasOwnProperty.call(r[0],"val")&&(s[s.length-1]={id:s[s.length-1],where:[r.shift()]}),s.push(...r)}const o={from:{ref:s}};return t&&t.columns&&(o.columns=t.columns),o}(e,s)):(Ze=t,t=n)):(Ze=t,t=n))),t}function Je(){var t,e,s,o,u,a,c;return t=Ze,(e=pn())!==n&&(t,e=g(e)),(t=e)===n&&(t=Ze,(e=hn())!==n&&Pn()!==n?(61===r.charCodeAt(Ze)?(s="=",Ze++):(s=n,0===ze&&qe(v)),s!==n&&Pn()!==n&&(o=pn())!==n?(u=Ze,(a=kn())!==n&&(c=Je())!==n?u=a=[a,c]:(Ze=u,u=n),u===n&&(u=null),u!==n?(t,t=e=function(r,t,e){const n=[r,"=",t];return e&&n.push("and",...e[1]),n}(e,o,u)):(Ze=t,t=n)):(Ze=t,t=n)):(Ze=t,t=n)),t}function Qe(){var t,e,s,o,u;return t=Ze,(e=We())!==n&&(t,e=void((u=e)&&u.apply&&(Yn.apply=u.apply))),(t=e)===n&&(t=Ze,r.substr(Ze,11)===b?(e=b,Ze+=11):(e=n,0===ze&&qe(y)),e!==n&&(s=Pn())!==n?(o=function(){var t,e,s;t=Ze,(e=_n())===n&&(e=null);e!==n?(s=function(){var t,e,s;t=Ze,e=[],ve.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(be));if(s!==n)for(;s!==n;)e.push(s),ve.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(be));else e=n;t=e!==n?r.substring(t,Ze):e;return t}(),s===n&&(s=null),s!==n?(t,o=e,t=e=void(s||ss(o))):(Ze=t,t=n)):(Ze=t,t=n);var o;return t}(),o!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=function(){var t,e,s,o,u;t=Ze,r.substr(Ze,8)===hr?(e=hr,Ze+=8):(e=n,0===ze&&qe(pr));if(e!==n){for(s=Ze,o=[],fr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(lr));u!==n;)o.push(u),fr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(lr));(s=o!==n?r.substring(s,Ze):o)!==n?(t,t=e=function(r){if("json"!==r.toLowerCase()){const r=new Error("ONLY_QUERY_PARAM_FORMAT_JSON_ALLOWED");throw r.statusCode=501,r}}(s)):(Ze=t,t=n)}else Ze=t,t=n;return t}(),t===n&&(t=function(){var t,e,s,o,u,a;t=Ze,ur.test(r.charAt(Ze))?(e=r.charAt(Ze),Ze++):(e=n,0===ze&&qe(ar));if(e!==n){for(s=[],cr.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ir));o!==n;)s.push(o),cr.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ir));if(s!==n)if(61===r.charCodeAt(Ze)?(o=m,Ze++):(o=n,0===ze&&qe(v)),o!==n){for(u=[],fr.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(lr));a!==n;)u.push(a),fr.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(lr));u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n}else Ze=t,t=n;return t}()))),t}function We(){var t,e,s,o,u,a,c,i,f,l,h;if(t=Ze,r.substr(Ze,8)===C?(e=C,Ze+=8):(e=n,0===ze&&qe(w)),e!==n)if((s=Pn())!==n)if((o=Ge())!==n){for(u=[],a=Ze,(c=kn())!==n&&(i=Ge())!==n?a=c=[c,i]:(Ze=a,a=n);a!==n;)u.push(a),a=Ze,(c=kn())!==n&&(i=Ge())!==n?a=c=[c,i]:(Ze=a,a=n);u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;if(t===n){if(t=Ze,r.substr(Ze,8)===x?(e=x,Ze+=8):(e=n,0===ze&&qe(E)),e!==n)if((s=Pn())!==n)if((o=He())!==n){for(u=[],a=Ze,(c=kn())!==n&&(i=He())!==n?a=c=[c,i]:(Ze=a,a=n);a!==n;)u.push(a),a=Ze,(c=kn())!==n&&(i=He())!==n?a=c=[c,i]:(Ze=a,a=n);u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;if(t===n&&(t=Ze,r.substr(Ze,8)===$?(e=$,Ze+=8):(e=n,0===ze&&qe(L)),e!==n&&(s=Pn())!==n&&(o=en())!==n?(t,h=o,t=e=void(Yn.where=h)):(Ze=t,t=n),t===n)){if(t=Ze,r.substr(Ze,9)===B?(e=B,Ze+=9):(e=n,0===ze&&qe(S)),e!==n)if((s=Pn())!==n)if((o=an())!==n){for(u=[],a=Ze,(c=kn())!==n&&(i=an())!==n?(a,a=c=T(0,i)):(Ze=a,a=n);a!==n;)u.push(a),a=Ze,(c=kn())!==n&&(i=an())!==n?(a,a=c=T(0,i)):(Ze=a,a=n);u!==n?(t,t=e=void os(o,!0)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;t===n&&(t=Ze,r.substr(Ze,5)===O?(e=O,Ze+=5):(e=n,0===ze&&qe(_)),e!==n&&(s=Pn())!==n&&(o=Ke())!==n?(t,l=o,t=e=void((Yn.limit||(Yn.limit={})).rows={val:l})):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===R?(e=R,Ze+=6):(e=n,0===ze&&qe(Z)),e!==n&&(s=Pn())!==n&&(o=Ve())!==n?(t,e=function(r){ss(r)}(o),t=e):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,8)===j?(e=j,Ze+=8):(e=n,0===ze&&qe(N)),e!==n&&(s=Pn())!==n&&(o=rn())!==n?(t,t=e=void((f=o)&&(Yn.search=f))):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===k?(e=k,Ze+=7):(e=n,0===ze&&qe(z)),e!==n&&(s=Pn())!==n?(o=function(){var r,t;r=Ze,(t=Tn())!==n&&(r,t=function(r){r&&(Yn.count=!0)}(t));return r=t}(),o!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===D?(e=D,Ze+=7):(e=n,0===ze&&qe(P)),e!==n&&(s=Pn())!==n&&(o=cn())!==n?(t,t=e=o):(Ze=t,t=n))))))}}return t}function Ge(){var t,e,s;return t=Ze,42===r.charCodeAt(Ze)?(e="*",Ze++):(e=n,0===ze&&qe(F)),e===n&&(e=hn()),e!==n&&(t,s=e,Yn.columns=Array.isArray(Yn.columns)?Yn.columns:[],Yn.columns.find(Gn(s))||Yn.columns.push(s),e=s),t=e}function He(){var t,e,s,o,u,a,c,i,f;if(t=Ze,e=Ze,42===r.charCodeAt(Ze)?(s="*",Ze++):(s=n,0===ze&&qe(F)),s===n&&(s=hn()),s!==n&&(e,s=function(r){const t="*"===r?{}:r;return t.expand="*",Array.isArray(Yn.expand)||(Yn.expand=[]),Yn.expand.find(Gn(t))||Yn.expand.push(t),t}(s)),(e=s)!==n){if(s=Ze,o=Ze,(u=zn())!==n&&(o,In.push(Yn),Yn=Yn.expand[Yn.expand.length-1],u=void(Yn.expand="*")),(o=u)!==n){for(u=Ze,a=[],c=Ze,Pn()!==n?(59===r.charCodeAt(Ze)?(i=";",Ze++):(i=n,0===ze&&qe(U)),i===n&&(i=null),i!==n&&Pn()!==n&&(f=We())!==n?(c,c=f):(Ze=c,c=n)):(Ze=c,c=n);c!==n;)a.push(c),c=Ze,Pn()!==n?(59===r.charCodeAt(Ze)?(i=";",Ze++):(i=n,0===ze&&qe(U)),i===n&&(i=null),i!==n&&Pn()!==n&&(f=We())!==n?(c,c=f):(Ze=c,c=n)):(Ze=c,c=n);a!==n&&(u,a=function(r){if(r.find((r=>r&&void 0!==r.apply))){const r=new Error("EXPAND_APPLY_UNSUPPORTED");throw r.statusCode=501,r}if(Yn.columns){"*"===Yn.expand&&(Yn.expand=[]);for(const r of Yn.columns)Yn.expand.find(Gn(r))||Yn.expand.push(r);delete Yn.columns}else Array.isArray(Yn.expand)&&-1===Yn.expand.indexOf("*")&&Yn.expand.unshift("*")}(a)),(u=a)!==n?(a=Ze,(c=Dn())!==n&&(a,c=void(Yn=In.pop())),(a=c)!==n?s=o=[o,u,a]:(Ze=s,s=n)):(Ze=s,s=n)}else Ze=s,s=n;s===n&&(s=null),s!==n?(o=Ze,(u=kn())!==n&&(a=He())!==n?o=u=[u,a]:(Ze=o,o=n),o===n&&(o=null),o!==n?(u=Ze,r.substr(Ze,7)===M?(a=M,Ze+=7):(a=n,0===ze&&qe(q)),a!==n&&(u,a=function(){const r=new Error("EXPAND_COUNT_UNSUPPORTED");throw r.statusCode=501,r}()),(u=a)===n&&(u=null),u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}function Ke(){var r,t;return r=Ze,(t=_n())!==n&&(r,t=t),r=t}function Ve(){var r,t;return r=Ze,(t=_n())!==n&&(r,t=t),r=t}function rn(){var r,t;return r=Ze,(t=tn())!==n&&(r,t=t),(r=t)===n&&(r=Pn()),r}function tn(){var t,e,s,o,u,a,c;if(t=Ze,e=Ze,(s=mn())===n&&(s=null),s!==n&&(e,s=I(s)),(e=s)!==n)if(s=Ze,(o=zn())!==n&&(u=tn())!==n&&(a=Dn())!==n?(s,s=o=Y(e,u)):(Ze=s,s=n),s===n&&(s=Ze,o=function(){var t,e,s,o,u;t=Ze,34===r.charCodeAt(Ze)?(e=It,Ze++):(e=n,0===ze&&qe(Yt));if(e!==n){for(s=Ze,o=[],r.substr(Ze,2)===Xt?(u=Xt,Ze+=2):(u=n,0===ze&&qe(Jt)),u===n&&(Qt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Wt)));u!==n;)o.push(u),r.substr(Ze,2)===Xt?(u=Xt,Ze+=2):(u=n,0===ze&&qe(Jt)),u===n&&(Qt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Wt)));(s=o!==n?r.substring(s,Ze):o)!==n?(34===r.charCodeAt(Ze)?(o=It,Ze++):(o=n,0===ze&&qe(Yt)),o!==n?(t,t=e=s.replace(/\\\\/g,"\\").replace(/\\"/g,'"')):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}(),o!==n&&(s,o=X(e,o)),(s=o)===n&&(s=Ze,(o=On())!==n&&(s,o=X(e,o)),(s=o)===n&&(s=Ze,o=function(){var t,e,s;t=Ze,e=[],Gt.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Ht));if(s!==n)for(;s!==n;)e.push(s),Gt.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Ht));else e=n;t=e!==n?r.substring(t,Ze):e;return t}(),o!==n&&(s,o=X(e,o)),s=o))),s!==n){for(o=[],u=Ze,(a=vn())===n&&(a=yn())===n&&(a=bn()),a!==n&&(c=tn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);u!==n;)o.push(u),u=Ze,(a=vn())===n&&(a=yn())===n&&(a=bn()),a!==n&&(c=tn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);o!==n?(t,t=e=e):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function en(){var r,t;return r=Ze,(t=nn())!==n&&(r,t=t),r=t}function nn(){var t,e,s,o,u,a,c,i;if(t=Ze,e=Ze,(s=mn())===n&&(s=null),s!==n&&(e,s=I(s)),(e=s)!==n)if(s=Ze,(o=zn())!==n&&(u=nn())!==n&&(a=Dn())!==n?(s,s=o=Y(e,u)):(Ze=s,s=n),s===n&&(s=Ze,(o=fn())!==n&&(s,i=o,o=void e.push(...i)),(s=o)===n&&(s=Ze,(o=sn())!==n&&(s,o=function(r,t){"not"===r[r.length-1]&&"not"===t[0]?r.push("(",...t,")"):r.push(...t)}(e,o)),(s=o)===n&&(s=Ze,o=function(){var t,e,s,o;ze++,t=Ze,r.substr(Ze,8).toLowerCase()===Ur?(e=r.substr(Ze,8),Ze+=8):(e=n,0===ze&&qe(Mr));e===n&&(r.substr(Ze,8).toLowerCase()===qr?(e=r.substr(Ze,8),Ze+=8):(e=n,0===ze&&qe(Ir)),e===n&&(r.substr(Ze,10).toLowerCase()===Yr?(e=r.substr(Ze,10),Ze+=10):(e=n,0===ze&&qe(Xr))));e!==n&&zn()!==n&&(s=ln())!==n&&kn()!==n&&(o=ln())!==n&&Dn()!==n?(t,u=s,a=o,t=e={func:e.toLowerCase(),args:[u,a]}):(Ze=t,t=n);var u,a;ze--,t===n&&(e=n,0===ze&&qe(Fr));return t}(),o!==n&&(s,o=function(r,t){r.push(t)}(e,o)),(s=o)===n&&(s=Ze,(o=Tn())!==n&&(s,o=X(e,o)),s=o)))),s!==n){for(o=[],u=Ze,(a=vn())===n&&(a=yn()),a!==n&&(c=nn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);u!==n;)o.push(u),u=Ze,(a=vn())===n&&(a=yn()),a!==n&&(c=nn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);o!==n?(t,t=e=e):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function sn(){var t,e,s,o,c,i,f;if(t=Ze,e=Ze,(s=Rn())!==n&&(e,s=[s]),(e=s)!==n)if(47===r.charCodeAt(Ze)?(s=u,Ze++):(s=n,0===ze&&qe(a)),s!==n){for(o=[],c=Ze,(i=Rn())!==n?(47===r.charCodeAt(Ze)?(f=u,Ze++):(f=n,0===ze&&qe(a)),f!==n?(c,c=i=Q(e,i)):(Ze=c,c=n)):(Ze=c,c=n);c!==n;)o.push(c),c=Ze,(i=Rn())!==n?(47===r.charCodeAt(Ze)?(f=u,Ze++):(f=n,0===ze&&qe(a)),f!==n?(c,c=i=Q(e,i)):(Ze=c,c=n)):(Ze=c,c=n);o!==n?(c=Ze,i=function(){var t,e,s;t=Ze,r.substr(Ze,3)===K?(e=K,Ze+=3):(e=n,0===ze&&qe(V));e!==n&&zn()!==n?((s=un())===n&&(s=null),s!==n&&Dn()!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n);return t}(),i!==n&&(c,i=function(r,t){let e=r.pop();if(!t)return["exists",{ref:[...r,{id:e}]}];let n=[];for(let r=0,s=0;r<t.length;++r){let o=t[r];o.ref&&0===o.ref.length&&"="===t[r+1]?n[s++]={func:"contains",args:[{ref:e},t[r+=2]]}:n[s++]=o}return n.length<t.length?(e=r.pop(),["exists",{ref:[...r,{id:e,where:n}]}]):["exists",{ref:[...r,{id:e,where:t}]}]}(e,i)),(c=i)===n&&(c=Ze,i=function(){var t,e,s;t=Ze,r.substr(Ze,3)===rr?(e=rr,Ze+=3):(e=n,0===ze&&qe(tr));e!==n&&zn()!==n&&(s=un())!==n&&Dn()!==n?(t,t=e=s):(Ze=t,t=n);return t}(),i!==n&&(c,i=function(r,t){let e=r.pop();return["not","exists",{ref:[...r,{id:e,where:["not",{xpr:[...t]}]}]}]}(e,i)),c=i),c!==n?(t,t=e=c):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function on(){var r,t,e,s,o,u,a,c,i;if(r=Ze,t=Ze,(e=mn())===n&&(e=null),e!==n&&(t,e=(c=e)?[c]:[]),(t=e)!==n)if(e=Ze,(s=zn())!==n&&(o=on())!==n&&(u=Dn())!==n?(e,i=o,e=s=void t.push("(",...i,")")):(Ze=e,e=n),e===n&&(e=Ze,(s=fn())!==n&&(e,s=function(r,t){r.push(...t)}(t,s)),(e=s)===n&&(e=Ze,(s=gn())!==n&&(e,s=function(r,t){r.push(t)}(t,s)),(e=s)===n&&(e=Ze,(s=sn())!==n&&(e,s=function(r,t){r.push(...t)}(t,s)),e=s))),e!==n){for(s=[],o=Ze,(u=vn())===n&&(u=yn()),u!==n&&(a=on())!==n?(o,o=u=W(t,u,a)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,(u=vn())===n&&(u=yn()),u!==n&&(a=on())!==n?(o,o=u=W(t,u,a)):(Ze=o,o=n);s!==n?(r,r=t=t):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;return r}function un(){var t,e,s,o;return t=Ze,(e=Rn())!==n?(58===r.charCodeAt(Ze)?(s=G,Ze++):(s=n,0===ze&&qe(H)),s!==n&&(o=on())!==n?(t,t=e=us(e,o)):(Ze=t,t=n)):(Ze=t,t=n),t}function an(){var t,e,s,o,u,a;return t=Ze,e=Ze,(s=sn())!==n&&(e,s=function(){const r=new Error("ORDERBY_LAMBDA_UNSUPPORTED");throw r.statusCode=501,r}()),(e=s)===n&&(e=gn())===n&&(e=hn()),e!==n?(s=Ze,Fn()!==n?(o=Ze,"asc"===r.substr(Ze,3)?(u="asc",Ze+=3):(u=n,0===ze&&qe(er)),u===n&&(r.substr(Ze,4)===nr?(u=nr,Ze+=4):(u=n,0===ze&&qe(sr))),(o=u!==n?r.substring(o,Ze):u)!==n?(s,s=o):(Ze=s,s=n)):(Ze=s,s=n),s===n&&(s=null),s!==n?(t,t=e=Un(e,(a=s)&&{sort:a})):(Ze=t,t=n)):(Ze=t,t=n),t}function cn(){var t,e,s,o,c,i;if(t=Ze,(e=Cn())!==n){for(s=[],o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Cn())!==n?(o,o=c=or(0,i)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Cn())!==n?(o,o=c=or(0,i)):(Ze=o,o=n);s!==n?(t,t=e=function(r,t){if(void 0!==r){t=Array.isArray(t)?t:[t];for(let e of t)for(const t in e)if("limit"===t&&e.limit&&r.limit&&r.limit.offset&&e.limit.rows)r.limit.rows=e.limit.rows;else if(r[t]||"groupBy"===t&&(r.where||r.search)||"aggregate"===t&&"groupBy"in r&&!("groupBy"in e)){let n=r;r={apply:n},"limit"===t&&e[t].offset&&n.limit&&n.limit.offset&&n.limit.offset.val&&(e[t].offset+=n.limit.offset.val),n=r,n[t]=e[t]}else r[t]=e[t];return{apply:r}}}(e,s)):(Ze=t,t=n)}else Ze=t,t=n;return t}function fn(){var t,e,s,o,u,a;return ze++,t=Ze,(e=ln())!==n&&Fn()!==n?(s=Ze,"eq"===r.substr(Ze,2)?(o="eq",Ze+=2):(o=n,0===ze&&qe(dr)),o===n&&("ne"===r.substr(Ze,2)?(o="ne",Ze+=2):(o=n,0===ze&&qe(gr)),o===n&&("lt"===r.substr(Ze,2)?(o="lt",Ze+=2):(o=n,0===ze&&qe(mr)),o===n&&("gt"===r.substr(Ze,2)?(o="gt",Ze+=2):(o=n,0===ze&&qe(vr)),o===n&&("le"===r.substr(Ze,2)?(o="le",Ze+=2):(o=n,0===ze&&qe(br)),o===n&&("ge"===r.substr(Ze,2)?(o="ge",Ze+=2):(o=n,0===ze&&qe(yr))))))),(s=o!==n?r.substring(s,Ze):o)!==n&&(o=Fn())!==n&&(u=ln())!==n?(t,t=e=[e,{eq:"=",ne:"!=",lt:"<",gt:">",le:"<=",ge:">="}[a=s]||a,u]):(Ze=t,t=n)):(Ze=t,t=n),ze--,t===n&&(e=n,0===ze&&qe(Ar)),t}function ln(){var t;return ze++,t=function(){var t,e,s,o,c,i,h;ze++,t=Ze,e=[],s=Ze,(o=Rn())!==n?(c=Ze,(i=zn())!==n&&(h=Je())!==n&&Dn()!==n?(c,c=i=xr(0,h)):(Ze=c,c=n),c===n&&(c=null),c!==n?(47===r.charCodeAt(Ze)?(i=u,Ze++):(i=n,0===ze&&qe(a)),i!==n?(s,s=o=Er(o,c)):(Ze=s,s=n)):(Ze=s,s=n)):(Ze=s,s=n);if(s!==n)for(;s!==n;)e.push(s),s=Ze,(o=Rn())!==n?(c=Ze,(i=zn())!==n&&(h=Je())!==n&&Dn()!==n?(c,c=i=xr(0,h)):(Ze=c,c=n),c===n&&(c=null),c!==n?(47===r.charCodeAt(Ze)?(i=u,Ze++):(i=n,0===ze&&qe(a)),i!==n?(s,s=o=Er(o,c)):(Ze=s,s=n)):(Ze=s,s=n)):(Ze=s,s=n);else e=n;e!==n?(r.substr(Ze,6)===f?(s=f,Ze+=6):(s=n,0===ze&&qe(l)),s!==n?(t,t=e={func:"count",as:"$count",args:[{ref:e}]}):(Ze=t,t=n)):(Ze=t,t=n);ze--,t===n&&(e=n,0===ze&&qe(wr));return t}(),t===n&&(t=gn())===n&&(t=pn())===n&&(t=hn())===n&&(t=An())===n&&(t=dn())===n&&(t=function(){var t,e,s,o,u;t=Ze,91===r.charCodeAt(Ze)?(e=Rr,Ze++):(e=n,0===ze&&qe(Zr));if(e!==n){for(s=Ze,o=[],kr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(zr));u!==n;)o.push(u),kr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(zr));(s=o!==n?r.substring(s,Ze):o)!==n?(93===r.charCodeAt(Ze)?(o=jr,Ze++):(o=n,0===ze&&qe(Nr)),o!==n?(t,t=e={list:s.replace(/"/g,"").split(",").map((r=>({val:r})))}):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}()),ze--,t===n&&(n,0===ze&&qe(Cr)),t}function hn(){var t,e,s,o,c,i,f,l;if(ze++,t=Ze,(e=Rn())!==n){for(s=[],o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Rn())!==n?(o,o=c=Lr(0,i)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Rn())!==n?(o,o=c=Lr(0,i)):(Ze=o,o=n);s!==n?(t,l=s,t=e="null"===(f=e)?{val:null}:{ref:[f,...l]}):(Ze=t,t=n)}else Ze=t,t=n;return ze--,t===n&&(e=n,0===ze&&qe($r)),t}function pn(){var t,e,s;return t=Ze,(e=Tn())===n&&(e=function(){var t,e,s,o,u,a,c,i,f,l,h,p,A,d,g,m,v,b,y,C,w,x,E,$,L;t=Ze,e=Ze,s=Ze,o=[],Kt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Vt));if(u!==n)for(;u!==n;)o.push(u),Kt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Vt));else o=n;if(o!==n)if(45===r.charCodeAt(Ze)?(u=re,Ze++):(u=n,0===ze&&qe(te)),u!==n)if(Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt)),a!==n)if(Kt.test(r.charAt(Ze))?(c=r.charAt(Ze),Ze++):(c=n,0===ze&&qe(Vt)),c!==n)if(45===r.charCodeAt(Ze)?(i=re,Ze++):(i=n,0===ze&&qe(te)),i!==n)if(Kt.test(r.charAt(Ze))?(f=r.charAt(Ze),Ze++):(f=n,0===ze&&qe(Vt)),f!==n)if(Kt.test(r.charAt(Ze))?(l=r.charAt(Ze),Ze++):(l=n,0===ze&&qe(Vt)),l!==n){if(h=Ze,84===r.charCodeAt(Ze)?(p="T",Ze++):(p=n,0===ze&&qe(ee)),p!==n)if(Kt.test(r.charAt(Ze))?(A=r.charAt(Ze),Ze++):(A=n,0===ze&&qe(Vt)),A!==n)if(Kt.test(r.charAt(Ze))?(d=r.charAt(Ze),Ze++):(d=n,0===ze&&qe(Vt)),d!==n)if(58===r.charCodeAt(Ze)?(g=G,Ze++):(g=n,0===ze&&qe(H)),g!==n)if(Kt.test(r.charAt(Ze))?(m=r.charAt(Ze),Ze++):(m=n,0===ze&&qe(Vt)),m!==n)if(Kt.test(r.charAt(Ze))?(v=r.charAt(Ze),Ze++):(v=n,0===ze&&qe(Vt)),v!==n){if(b=Ze,58===r.charCodeAt(Ze)?(y=G,Ze++):(y=n,0===ze&&qe(H)),y!==n)if(Kt.test(r.charAt(Ze))?(C=r.charAt(Ze),Ze++):(C=n,0===ze&&qe(Vt)),C!==n)if(Kt.test(r.charAt(Ze))?(w=r.charAt(Ze),Ze++):(w=n,0===ze&&qe(Vt)),w!==n){if(x=Ze,46===r.charCodeAt(Ze)?(E=".",Ze++):(E=n,0===ze&&qe(se)),E!==n){if($=[],Kt.test(r.charAt(Ze))?(L=r.charAt(Ze),Ze++):(L=n,0===ze&&qe(Vt)),L!==n)for(;L!==n;)$.push(L),Kt.test(r.charAt(Ze))?(L=r.charAt(Ze),Ze++):(L=n,0===ze&&qe(Vt));else $=n;$!==n?x=E=[E,$]:(Ze=x,x=n)}else Ze=x,x=n;x===n&&(x=null),x!==n?b=y=[y,C,w,x]:(Ze=b,b=n)}else Ze=b,b=n;else Ze=b,b=n;else Ze=b,b=n;b===n&&(b=null),b!==n?(90===r.charCodeAt(Ze)?(y="Z",Ze++):(y=n,0===ze&&qe(oe)),y===n&&(y=Ze,43===r.charCodeAt(Ze)?(C="+",Ze++):(C=n,0===ze&&qe(ue)),C===n&&(45===r.charCodeAt(Ze)?(C=re,Ze++):(C=n,0===ze&&qe(te))),C!==n?(Kt.test(r.charAt(Ze))?(w=r.charAt(Ze),Ze++):(w=n,0===ze&&qe(Vt)),w!==n?(Kt.test(r.charAt(Ze))?(x=r.charAt(Ze),Ze++):(x=n,0===ze&&qe(Vt)),x!==n?(58===r.charCodeAt(Ze)?(E=G,Ze++):(E=n,0===ze&&qe(H)),E!==n?(Kt.test(r.charAt(Ze))?($=r.charAt(Ze),Ze++):($=n,0===ze&&qe(Vt)),$!==n?(Kt.test(r.charAt(Ze))?(L=r.charAt(Ze),Ze++):(L=n,0===ze&&qe(Vt)),L!==n?y=C=[C,w,x,E,$,L]:(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)),y===n&&(y=null),y!==n?h=p=[p,A,d,g,m,v,b,y]:(Ze=h,h=n)):(Ze=h,h=n)}else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;h===n&&(h=null),h!==n?s=o=[o,u,a,c,i,f,l,h]:(Ze=s,s=n)}else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;e=s!==n?r.substring(e,Ze):s;e!==n&&(t,e=function(r){if(r.split("-")[0].length>4)throw Object.assign(new Error(`The type 'Edm.DateTimeOffset' is not compatible with '${r}'`),{statusCode:400});return r}(e));return t=e}()),e!==n&&(t,e=Br(e)),(t=e)===n&&(t=Ze,(e=Zn())!==n&&(t,e=Br(e)),(t=e)===n&&(t=Ze,e=function(){var t,e,s,o,u,a,c,i,f,l;t=Ze,e=Ze,s=Ze,ae.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ce));o===n&&(o=null);if(o!==n){if(u=[],Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt)),a!==n)for(;a!==n;)u.push(a),Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt));else u=n;if(u!==n){if(a=Ze,46===r.charCodeAt(Ze)?(c=ne,Ze++):(c=n,0===ze&&qe(se)),c!==n){if(i=[],Kt.test(r.charAt(Ze))?(f=r.charAt(Ze),Ze++):(f=n,0===ze&&qe(Vt)),f!==n)for(;f!==n;)i.push(f),Kt.test(r.charAt(Ze))?(f=r.charAt(Ze),Ze++):(f=n,0===ze&&qe(Vt));else i=n;i!==n?a=c=[c,i]:(Ze=a,a=n)}else Ze=a,a=n;if(a===n&&(a=null),a!==n){if(c=Ze,101===r.charCodeAt(Ze)?(i="e",Ze++):(i=n,0===ze&&qe(ie)),i!==n){if(f=[],Kt.test(r.charAt(Ze))?(l=r.charAt(Ze),Ze++):(l=n,0===ze&&qe(Vt)),l!==n)for(;l!==n;)f.push(l),Kt.test(r.charAt(Ze))?(l=r.charAt(Ze),Ze++):(l=n,0===ze&&qe(Vt));else f=n;f!==n?c=i=[i,f]:(Ze=c,c=n)}else Ze=c,c=n;c===n&&(c=null),c!==n?s=o=[o,u,a,c]:(Ze=s,s=n)}else Ze=s,s=n}else Ze=s,s=n}else Ze=s,s=n;e=s!==n?r.substring(e,Ze):s;e!==n&&(t,e=Qn(e));return t=e}(),e!==n&&(t,e="number"==typeof(s=e)?{val:s}:{val:s,literal:"number"}),(t=e)===n&&(t=Ze,(e=On())!==n&&(t,e=Br(e)),(t=e)===n&&(t=Ze,e=function(){var t,e,s,o,u,a;t=Ze,r.substr(Ze,7)===ye?(e=ye,Ze+=7):(e=n,0===ze&&qe(Ce));if(e!==n){if(s=Ze,o=Ze,u=[],we.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(xe)),a!==n)for(;a!==n;)u.push(a),we.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(xe));else u=n;u!==n?(r.substr(Ze,2)===Ee?(a=Ee,Ze+=2):(a=n,0===ze&&qe($e)),a===n&&(61===r.charCodeAt(Ze)?(a=m,Ze++):(a=n,0===ze&&qe(v))),a===n&&(a=null),a!==n?o=u=[u,a]:(Ze=o,o=n)):(Ze=o,o=n),(s=o!==n?r.substring(s,Ze):o)!==n?(39===r.charCodeAt(Ze)?(o=Dt,Ze++):(o=n,0===ze&&qe(Pt)),o!==n?(t,t=e=Wn(s)):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}(),e!==n&&(t,e=Br(e)),t=e)))),t}function An(){var t,e,s,o,u,a;if(t=Ze,e=Ze,s=Ze,123===r.charCodeAt(Ze)?(o="{",Ze++):(o=n,0===ze&&qe(Sr)),o!==n){for(u=[],(a=An())===n&&(Tr.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Or)));a!==n;)u.push(a),(a=An())===n&&(Tr.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Or)));u!==n?(125===r.charCodeAt(Ze)?(a="}",Ze++):(a=n,0===ze&&qe(_r)),a!==n?s=o=[o,u,a]:(Ze=s,s=n)):(Ze=s,s=n)}else Ze=s,s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e=Br(e)),t=e}function dn(){var t,e,s,o,u,a,c,i;if(t=Ze,e=Ze,s=Ze,91===r.charCodeAt(Ze)?(o=Rr,Ze++):(o=n,0===ze&&qe(Zr)),o!==n&&(u=Pn())!==n?(93===r.charCodeAt(Ze)?(a=jr,Ze++):(a=n,0===ze&&qe(Nr)),a!==n?s=o=[o,u,a]:(Ze=s,s=n)):(Ze=s,s=n),s===n)if(s=Ze,91===r.charCodeAt(Ze)?(o=Rr,Ze++):(o=n,0===ze&&qe(Zr)),o!==n)if((u=Pn())!==n)if(123===r.charCodeAt(Ze)?(a="{",Ze++):(a=n,0===ze&&qe(Sr)),a!==n){for(c=[],(i=dn())===n&&(kr.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(zr)));i!==n;)c.push(i),(i=dn())===n&&(kr.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(zr)));c!==n?(93===r.charCodeAt(Ze)?(i=jr,Ze++):(i=n,0===ze&&qe(Nr)),i!==n?s=o=[o,u,a,c,i]:(Ze=s,s=n)):(Ze=s,s=n)}else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e=Br(e)),t=e}function gn(){var t,e,s,o,u,a,c;if(ze++,t=Ze,e=Ze,s=[],ur.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ar)),o!==n)for(;o!==n;)s.push(o),ur.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ar));else s=n;if((e=s!==n?r.substring(e,Ze):s)!==n)if((s=zn())!==n)if((o=ln())!==n){for(u=[],a=Ze,kn()!==n&&(c=ln())!==n?(a,a=Pr(0,0,c)):(Ze=a,a=n);a!==n;)u.push(a),a=Ze,kn()!==n&&(c=ln())!==n?(a,a=Pr(0,0,c)):(Ze=a,a=n);u!==n&&(a=Dn())!==n?(t,t=e=function(r,t,e){if(Mn&&!(r.toLowerCase()in Mn.functions))throw Object.assign(new Error(`"${r}" is an unknown function in OData URL spec (strict mode)`),{statusCode:400});return{func:r.toLowerCase(),args:[t,...e]}}(e,o,u)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;return ze--,t===n&&(e=n,0===ze&&qe(Dr)),t}function mn(){var t,e;return t=Ze,Pn()!==n?("not"===r.substr(Ze,3).toLowerCase()?(e=r.substr(Ze,3),Ze+=3):(e=n,0===ze&&qe(Jr)),e!==n&&Fn()!==n?(t,t="not"):(Ze=t,t=n)):(Ze=t,t=n),t}function vn(){var t,e;return t=Ze,Fn()!==n?("and"===r.substr(Ze,3).toLowerCase()?(e=r.substr(Ze,3),Ze+=3):(e=n,0===ze&&qe(Qr)),e!==n&&Fn()!==n?(t,t="and"):(Ze=t,t=n)):(Ze=t,t=n),t}function bn(){var r,t;return r=Ze,(t=Fn())!==n&&(r,t="and"),r=t}function yn(){var t,e;return t=Ze,Fn()!==n?("or"===r.substr(Ze,2).toLowerCase()?(e=r.substr(Ze,2),Ze+=2):(e=n,0===ze&&qe(Wr)),e!==n&&Fn()!==n?(t,t="or"):(Ze=t,t=n)):(Ze=t,t=n),t}function Cn(){var t,e,s;return t=Ze,r.substr(Ze,9)===Gr?(e=Gr,Ze+=9):(e=n,0===ze&&qe(Hr)),e!==n?(s=function(){var r,t,e,s,o;if(r=Ze,zn()!==n)if(Pn()!==n)if((t=wn())!==n){for(e=[],s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=wn())!==n?(s,s=bt(0,o)):(Ze=s,s=n);s!==n;)e.push(s),s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=wn())!==n?(s,s=bt(0,o)):(Ze=s,s=n);e!==n&&(s=Pn())!==n&&Dn()!==n?(r,u=e,r={aggregate:[t,...u]}):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var u;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===Kr?(e=Kr,Ze+=7):(e=n,0===ze&&qe(Vr)),e!==n?(s=function(){var r,t,e,s,o,u,a,c;if(r=Ze,(t=zn())!==n)if(zn()!==n)if((e=Bn())!==n){for(s=[],o=Ze,(u=kn())!==n&&(a=Bn())!==n?(o,o=u=bt(0,a)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,(u=kn())!==n&&(a=Bn())!==n?(o,o=u=bt(0,a)):(Ze=o,o=n);s!==n?(o=Ze,(u=Dn())!==n&&(o,i=s,u={groupBy:[e,...i]}),(o=u)!==n?(u=Ze,(a=kn())!==n&&(c=cn())!==n?(u,u=a=c):(Ze=u,u=n),u===n&&(u=null),u!==n&&(a=Dn())!==n?(r,t=function(r,t,e){let n={};return n=e?{groupBy:[r,...t],...e.apply}:{groupBy:[r,...t]},n}(e,s,u),r=t):(Ze=r,r=n)):(Ze=r,r=n)):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var i;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===rt?(e=rt,Ze+=6):(e=n,0===ze&&qe(tt)),e!==n?(s=function(){var r,t,e;r=Ze,zn()!==n&&Pn()!==n?(t=Ze,(e=en())!==n&&(t,e=e),(t=e)!==n&&(e=Pn())!==n&&Dn()!==n?(r,r={where:t}):(Ze=r,r=n)):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===et?(e=et,Ze+=6):(e=n,0===ze&&qe(nt)),e!==n?(s=function(){var r,t,e;r=Ze,zn()!==n&&Pn()!==n?(t=Ze,(e=rn())!==n&&(t,e=function(r){if(r)return r}(e)),(t=e)!==n&&(e=Pn())!==n&&Dn()!==n?(r,r={search:t}):(Ze=r,r=n)):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===st?(e=st,Ze+=6):(e=n,0===ze&&qe(ot)),e!==n?(s=function(){var r,t,e,s,o;if(r=Ze,zn()!==n)if(Pn()!==n)if((t=cn())!==n){if(e=[],s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=cn())!==n?(s,s=Tt(0,o)):(Ze=s,s=n),s!==n)for(;s!==n;)e.push(s),s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=cn())!==n?(s,s=Tt(0,o)):(Ze=s,s=n);else e=n;e!==n&&(s=Pn())!==n&&Dn()!==n?(r,u=e,r={concat:[t,...u]}):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var u;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===ut?(e=ut,Ze+=7):(e=n,0===ze&&qe(at)),e!==n?(s=function(){var r,t,e,s,o,u,a,c,i,f;if(r=Ze,(t=zn())!==n)if((e=Pn())!==n)if((s=Sn())!==n){for(o=[],u=Ze,(a=Pn())!==n&&(c=kn())!==n&&(i=Pn())!==n&&(f=Sn())!==n?u=a=[a,c,i,f]:(Ze=u,u=n);u!==n;)o.push(u),u=Ze,(a=Pn())!==n&&(c=kn())!==n&&(i=Pn())!==n&&(f=Sn())!==n?u=a=[a,c,i,f]:(Ze=u,u=n);o!==n&&(u=Pn())!==n&&(a=Dn())!==n?r=t=[t,e,s,o,u,a]:(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,"top"===r.substr(Ze,3)?(e="top",Ze+=3):(e=n,0===ze&&qe(ct)),e!==n?(s=function(){var r,t;r=Ze,zn()!==n&&Pn()!==n&&(t=Ke())!==n&&Pn()!==n&&Dn()!==n?(r,r={limit:{rows:{val:t}}}):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,4)===it?(e=it,Ze+=4):(e=n,0===ze&&qe(ft)),e!==n?(s=function(){var r,t;r=Ze,zn()!==n&&Pn()!==n&&(t=Ve())!==n&&Pn()!==n&&Dn()!==n?(r,r={limit:{offset:{val:t}}}):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===lt?(e=lt,Ze+=7):(e=n,0===ze&&qe(ht)),e!==n?(s=function(){var r,t,e,s,o;if(r=Ze,zn()!==n)if(Pn()!==n)if((t=an())!==n){for(e=[],s=Ze,kn()!==n&&(o=an())!==n?(s,s=Rt(0,o)):(Ze=s,s=n);s!==n;)e.push(s),s=Ze,kn()!==n&&(o=an())!==n?(s,s=Rt(0,o)):(Ze=s,s=n);e!==n&&(s=Pn())!==n&&Dn()!==n?(r,u=e,r={orderBy:[t,...u]}):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var u;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,"topcount"===r.substr(Ze,8).toLowerCase()?(e=r.substr(Ze,8),Ze+=8):(e=n,0===ze&&qe(pt)),e===n&&("bottomcount"===r.substr(Ze,11).toLowerCase()?(e=r.substr(Ze,11),Ze+=11):(e=n,0===ze&&qe(At)),e===n&&("topsum"===r.substr(Ze,6).toLowerCase()?(e=r.substr(Ze,6),Ze+=6):(e=n,0===ze&&qe(dt)),e===n&&("bottomsum"===r.substr(Ze,9).toLowerCase()?(e=r.substr(Ze,9),Ze+=9):(e=n,0===ze&&qe(gt)),e===n&&("toppercent"===r.substr(Ze,10).toLowerCase()?(e=r.substr(Ze,10),Ze+=10):(e=n,0===ze&&qe(mt)),e===n&&("bottompercent"===r.substr(Ze,13).toLowerCase()?(e=r.substr(Ze,13),Ze+=13):(e=n,0===ze&&qe(vt))))))),e!==n?(s=function(){var r,t,e;r=Ze,zn()!==n&&Pn()!==n&&(t=ln())!==n&&Pn()!==n&&kn()!==n&&Pn()!==n&&(e=ln())!==n&&Pn()!==n&&Dn()!==n?(r,r=[t,e]):(Ze=r,r=n);return r}(),s!==n?(t,t=e=function(r,t){if(!{topcount:!0,bottomcount:!0,topsum:!1,bottomsum:!1,toppercent:!1,bottompercent:!1}[r=r.toLowerCase()])throw Object.assign(new Error(`Transformation "${r}" in $apply is not yet supported.`),{statusCode:501});return{aggregate:[{func:r,args:t}]}}(e,s)):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,e=function(){var t,e;t=Ze,r.substr(Ze,8)===Ot?(e=Ot,Ze+=8):(e=n,0===ze&&qe(_t));e!==n&&(t,e={identity:!0});return t=e}(),e!==n&&(t,e=e),t=e)))))))))),t}function wn(){var t,e,s,o;return t=Ze,e=Ze,r.substr(Ze,6)===f?(s=f,Ze+=6):(s=n,0===ze&&qe(l)),s!==n&&(o=Ln())!==n?(e,e=s={func:"count",args:[{val:1}],as:o}):(Ze=e,e=n),e===n&&(e=xn()),e!==n&&(t,e=e),t=e}function xn(){var r,t,e,s,o;return r=Ze,(t=hn())!==n?((e=En())===n&&(e=null),e!==n?((s=$n())===n&&(s=null),s!==n?((o=Ln())===n&&(o=null),o!==n?(r,r=t={func:e,args:[t],as:o}):(Ze=r,r=n)):(Ze=r,r=n)):(Ze=r,r=n)):(Ze=r,r=n),r===n&&(r=Ze,(t=Rn())!==n&&(e=zn())!==n&&(s=xn())!==n&&(o=Dn())!==n?r=t=[t,e,s,o]:(Ze=r,r=n)),r}function En(){var t,e,s,o,u;if(t=Ze,Fn()!==n)if(r.substr(Ze,4)===yt?(e=yt,Ze+=4):(e=n,0===ze&&qe(Ct)),e!==n)if(Fn()!==n){if(s=Ze,o=[],ur.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(ar)),u!==n)for(;u!==n;)o.push(u),ur.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(ar));else o=n;(s=o!==n?r.substring(s,Ze):o)!==n?(t,t=s.toLowerCase()):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;return t}function $n(){var t,e,s,o,u,a,c;return t=Ze,(e=Fn())!==n?(r.substr(Ze,4)===wt?(s=wt,Ze+=4):(s=n,0===ze&&qe(xt)),s!==n&&(o=Fn())!==n&&(u=hn())!==n&&(a=En())!==n?((c=$n())===n&&(c=null),c!==n?t=e=[e,s,o,u,a,c]:(Ze=t,t=n)):(Ze=t,t=n)):(Ze=t,t=n),t}function Ln(){var t,e,s;return t=Ze,Fn()!==n?("as"===r.substr(Ze,2)?(e="as",Ze+=2):(e=n,0===ze&&qe(Et)),e!==n&&Fn()!==n&&(s=Rn())!==n?(t,t=s):(Ze=t,t=n)):(Ze=t,t=n),t}function Bn(){var t,e;return t=Ze,e=function(){var t,e,s,o,u,a,c,i,f,l,h;t=Ze,e=Ze,r.substr(Ze,6)===$t?(s=$t,Ze+=6):(s=n,0===ze&&qe(Lt));if(s!==n)if((o=zn())!==n)if((u=Pn())!==n)if(r.substr(Ze,4)===Bt?(a=Bt,Ze+=4):(a=n,0===ze&&qe(St)),a===n&&(a=hn()),a!==n){if(c=[],i=Ze,(f=Pn())!==n&&(l=kn())!==n&&(h=hn())!==n?i=f=[f,l,h]:(Ze=i,i=n),i!==n)for(;i!==n;)c.push(i),i=Ze,(f=Pn())!==n&&(l=kn())!==n&&(h=hn())!==n?i=f=[f,l,h]:(Ze=i,i=n);else c=n;c!==n&&(i=Pn())!==n&&(f=Dn())!==n?e=s=[s,o,u,a,c,i,f]:(Ze=e,e=n)}else Ze=e,e=n;else Ze=e,e=n;else Ze=e,e=n;else Ze=e,e=n;e!==n&&(t,e=function(r){const t=new Error("Rollup in groupby is not supported yet.");throw t.statusCode=501,t}());return t=e}(),e===n&&(e=hn()),e!==n&&(t,e=e),t=e}function Sn(){var r,t,e;return r=Ze,(t=nn())!==n&&(e=Ln())!==n?r=t=[t,e]:(Ze=r,r=n),r}function Tn(){var t,e;return t=Ze,r.substr(Ze,4)===Zt?(e=Zt,Ze+=4):(e=n,0===ze&&qe(jt)),e===n&&(r.substr(Ze,5)===Nt?(e=Nt,Ze+=5):(e=n,0===ze&&qe(kt))),e!==n&&(t,e="true"===e),t=e}function On(){var t,e,s,o,u;if(ze++,t=Ze,39===r.charCodeAt(Ze)?(e=Dt,Ze++):(e=n,0===ze&&qe(Pt)),e!==n){for(s=Ze,o=[],r.substr(Ze,2)===Ft?(u=Ft,Ze+=2):(u=n,0===ze&&qe(Ut)),u===n&&(Mt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(qt)));u!==n;)o.push(u),r.substr(Ze,2)===Ft?(u=Ft,Ze+=2):(u=n,0===ze&&qe(Ut)),u===n&&(Mt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(qt)));(s=o!==n?r.substring(s,Ze):o)!==n?(39===r.charCodeAt(Ze)?(o=Dt,Ze++):(o=n,0===ze&&qe(Pt)),o!==n?(t,t=e=s.replace(/''/g,"'")):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return ze--,t===n&&(e=n,0===ze&&qe(zt)),t}function _n(){var t,e,s,o,u,a;if(t=Ze,e=Ze,s=Ze,ae.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ce)),o===n&&(o=null),o!==n){if(u=[],Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt)),a!==n)for(;a!==n;)u.push(a),Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt));else u=n;u!==n?s=o=[o,u]:(Ze=s,s=n)}else Ze=s,s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e=parseInt(e)),t=e}function Rn(){var t,e,s,o,u,a,c,i;if(t=Ze,e=Ze,ze++,s=Tn(),ze--,s===n?e=void 0:(Ze=e,e=n),e!==n)if(s=Ze,ze++,o=Zn(),ze--,o===n?s=void 0:(Ze=s,s=n),s!==n){if(o=Ze,u=Ze,fe.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(le)),a!==n){for(c=[],he.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(pe));i!==n;)c.push(i),he.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(pe));c!==n?u=a=[a,c]:(Ze=u,u=n)}else Ze=u,u=n;(o=u!==n?r.substring(o,Ze):u)!==n?(t,t=e=o):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function Zn(){var t,e,s,o,u,a,c,i,f,l,h,p,A,d;return t=Ze,e=Ze,(s=jn())!==n&&(o=jn())!==n?(45===r.charCodeAt(Ze)?(u=re,Ze++):(u=n,0===ze&&qe(te)),u===n&&(u=null),u!==n&&(a=jn())!==n?(45===r.charCodeAt(Ze)?(c=re,Ze++):(c=n,0===ze&&qe(te)),c===n&&(c=null),c!==n&&(i=jn())!==n?(45===r.charCodeAt(Ze)?(f=re,Ze++):(f=n,0===ze&&qe(te)),f===n&&(f=null),f!==n&&(l=jn())!==n?(45===r.charCodeAt(Ze)?(h=re,Ze++):(h=n,0===ze&&qe(te)),h===n&&(h=null),h!==n&&(p=jn())!==n&&(A=jn())!==n&&(d=jn())!==n?e=s=[s,o,u,a,c,i,f,l,h,p,A,d]:(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n),t=e!==n?r.substring(t,Ze):e}function jn(){var t,e,s,o,u,a;return t=Ze,e=Ze,Ae.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(de)),s!==n?(Ae.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(de)),o!==n?(Ae.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(de)),u!==n?(Ae.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(de)),a!==n?e=s=[s,o,u,a]:(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n),t=e!==n?r.substring(t,Ze):e}function Nn(){var t,e,s,o;if(t=Ze,e=Ze,s=[],ge.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(me)),o!==n)for(;o!==n;)s.push(o),ge.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(me));else s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e={val:e}),t=e}function kn(){var t,e,s,o;return t=Ze,(e=Pn())!==n?(44===r.charCodeAt(Ze)?(s=",",Ze++):(s=n,0===ze&&qe(Le)),s!==n&&(o=Pn())!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t}function zn(){var t,e,s,o;return t=Ze,(e=Pn())!==n?(40===r.charCodeAt(Ze)?(s="(",Ze++):(s=n,0===ze&&qe(Be)),s!==n&&(o=Pn())!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t}function Dn(){var t,e,s;return t=Ze,(e=Pn())!==n?(41===r.charCodeAt(Ze)?(s=")",Ze++):(s=n,0===ze&&qe(Se)),s!==n?t=e=[e,s]:(Ze=t,t=n)):(Ze=t,t=n),t}function Pn(){var t,e,s;for(ze++,t=Ze,e=[],Oe.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(_e));s!==n;)e.push(s),Oe.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(_e));return t=e!==n?r.substring(t,Ze):e,ze--,t===n&&(e=n,0===ze&&qe(Te)),t}function Fn(){var t,e,s;if(ze++,t=Ze,e=[],Oe.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(_e)),s!==n)for(;s!==n;)e.push(s),Oe.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(_e));else e=n;return t=e!==n?r.substring(t,Ze):e,ze--,t===n&&(e=n,0===ze&&qe(Re)),t}const Un=Object.assign,{strict:Mn,minimal:qn}=t,In=[];let Yn,Xn;const Jn=["$value"],Qn=t.safeNumber||function(r){const t=Number(r);return Number.isSafeInteger(t)?t:r},Wn=t.standardBase64||function(r){return Buffer.from(r,"base64").toString("base64")},Gn=r=>t=>r===t||r.as&&t.as&&r.as===t.as||t.as&&r.ref&&t.as===r.ref[r.ref.length-1]||r.ref&&t.ref&&r.ref.join("")===t.ref.join(""),Hn=r=>t=>{if(Array.isArray(t))return t.map(Hn(r));const e=t.ref&&r.find((r=>r.as&&r.func&&r.as===t.ref[0]));return e||t},Kn=r=>t=>Array.isArray(t)?t.map(Kn(r)):t.ref&&!r.find(Gn(t))?{val:null}:t,Vn=(r,t)=>{if(1===t.ref.length)r.find(Gn(t))||r.push(t);else{const e=t.ref.shift(),n=r.find((r=>r.ref&&r.ref[0]===e));if(n)Vn(n.expand,t);else{const n={ref:[e],expand:[]};Vn(n.expand,t),r.push(n)}}},rs=(r,t,e=!1)=>{let n=ns({from:r.from},t,e);if(Array.isArray(n))for(let t=0;t<n.length;t++)n[t]=ts(n[t],r,e);else n=ts(n,r,e);return n},ts=(r,t,e)=>{if(!t)return r;t.apply&&delete t.apply;let n={};t.columns&&"$count"===t.columns[0].as||r.SELECT.where&&t.where||r.SELECT.limit&&t.limit||r.SELECT.orderBy&&t.orderBy||r.SELECT.search&&t.search?n.from=r:n=r.SELECT;for(const r in t)"columns"===r?(t.columns=t.columns.map((r=>n.columns&&n.columns.find((t=>r.ref&&r.ref[0]===t.as||t.ref&&r.ref&&r.ref[0]===t.ref[0]&&!r.expand))||r)),n.columns&&n.groupBy&&t.columns.push(...n.columns.filter((r=>e&&n.groupBy.find((t=>r.ref&&r.ref[0]===t.ref[0]))&&!t.columns.some((t=>t.ref&&t.ref[0]===r.as||t.ref&&r.ref&&t.ref[0]===r.ref[0]||t.as&&t.as===r.as))))||[]),n.columns=t.columns):"from"!==r&&(n[r]=t[r]);const s=[...n.columns&&n.columns.filter((r=>n.groupBy&&n.groupBy.find((t=>r.ref&&r.ref[0]===t.ref[0]))))||[],...n.columns&&n.columns.filter((r=>r&&"object"==typeof r&&"func"in r))||[]];return es(n,s,e),{SELECT:n}},es=(r,t,e)=>{t.length&&(r.columns=r.columns&&!e?r.columns.reduce(((r,e)=>{const n=t.find(Gn(e));return n&&r.push(n),r}),[]):t,r.where&&(r.where=r.where.map(Hn(r.columns)),r.groupBy&&(r.having=r.where.map(Kn(r.groupBy)),delete r.where)),r.columns=r.columns.reduce(((r,e)=>(e.ref&&e.ref.length>1&&t.find(Gn(e))?Vn(r,{ref:[...e.ref]}):r.push(e),r)),[]))},ns=(r,t,e)=>{if(!t)return;if(r.apply&&delete r.apply,t.identity&&r.from.SELECT&&(r=r.from.SELECT),(t.apply||t.where&&r.where||t.search&&r.search||t.limit&&r.limit||t.orderBy&&r.orderBy)&&(r.from={SELECT:{...r}}),t.where&&(r.where=t.where),t.search&&(r.search=t.search),t.groupBy){r.groupBy=[];for(const e of t.groupBy)r.groupBy.find(Gn(e))||r.groupBy.push(e)}t.limit&&(r.limit=t.limit),t.orderBy&&(r.orderBy=t.orderBy);const n=[...r.groupBy||[],...t.aggregate||[]];if(es(r,n,e),t.apply&&r.from&&ns(r.from.SELECT,t.apply),t.concat&&Array.isArray(t.concat)){const e=[];for(let n of t.concat){n.from=1===Object.keys(r).length?r.from:{SELECT:r};const t=ns(n,n.apply);Array.isArray(t)?e.push(...t):e.push(t)}r=e}return Array.isArray(r)?r:{SELECT:r}},ss=r=>{Yn.limit&&Yn.limit.offset&&Yn.limit.offset.val&&(r+=Yn.limit.offset.val),(Yn.limit||(Yn.limit={})).offset={val:r}},os=(r,t=!1)=>{Yn.orderBy=Yn.orderBy?t?[r,...Yn.orderBy]:[...Yn.orderBy,r]:[r]},us=(r,t)=>{for(const e of t)e.ref&&e.ref[0]===r&&e.ref.shift(),e.func&&us(r,e.args);return t};if((e=o())!==n&&Ze===r.length)return e;throw e!==n&&Ze<r.length&&qe({type:"end"}),Ie(ke,Ne<r.length?r.charAt(Ne):null,Ne<r.length?Me(Ne,Ne+1):Me(Ne,Ne))}peg$subclass(peg$SyntaxError,Error),peg$SyntaxError.buildMessage=function(r,t){var e={literal:function(r){return'"'+s(r.text)+'"'},class:function(r){var t,e="";for(t=0;t<r.parts.length;t++)e+=r.parts[t]instanceof Array?o(r.parts[t][0])+"-"+o(r.parts[t][1]):o(r.parts[t]);return"["+(r.inverted?"^":"")+e+"]"},any:function(r){return"any character"},end:function(r){return"end of input"},other:function(r){return r.description}};function n(r){return r.charCodeAt(0).toString(16).toUpperCase()}function s(r){return r.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(r){return"\\x0"+n(r)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(r){return"\\x"+n(r)}))}function o(r){return r.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(r){return"\\x0"+n(r)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(r){return"\\x"+n(r)}))}return"Expected "+function(r){var t,n,s,o=new Array(r.length);for(t=0;t<r.length;t++)o[t]=(s=r[t],e[s.type](s));if(o.sort(),o.length>0){for(t=1,n=1;t<o.length;t++)o[t-1]!==o[t]&&(o[n]=o[t],n++);o.length=n}switch(o.length){case 1:return o[0];case 2:return o[0]+" or "+o[1];default:return o.slice(0,-1).join(", ")+", or "+o[o.length-1]}}(r)+" but "+function(r){return r?'"'+s(r)+'"':"end of input"}(t)+" found."},module.exports={SyntaxError:peg$SyntaxError,parse:peg$parse};
1
+ "use strict";function peg$subclass(r,t){function e(){this.constructor=r}e.prototype=t.prototype,r.prototype=new e}function peg$SyntaxError(r,t,e,n){this.message=r,this.expected=t,this.found=e,this.location=n,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,peg$SyntaxError)}function peg$parse(r,t){t=void 0!==t?t:{};var e,n={},s={ODataRelativeURI:Ye},o=Ye,u="/",a=De("/",!1),c=De("?",!1),i=De("&",!1),f="$count",l=De("$count",!1),h="$ref",p=De("$ref",!1),A="$value",d=De("$value",!1),g=function(r){return[r]},m="=",v=De("=",!1),b="$skiptoken=",y=De("$skiptoken=",!1),C="$select=",w=De("$select=",!1),x="$expand=",E=De("$expand=",!1),$="$filter=",L=De("$filter=",!1),B="$orderby=",S=De("$orderby=",!1),T=function(r,t){os(t)},_="$top=",O=De("$top=",!1),R="$skip=",Z=De("$skip=",!1),j="$search=",N=De("$search=",!1),k="$count=",z=De("$count=",!1),D="$apply=",P=De("$apply=",!1),F=De("*",!1),U=De(";",!1),M="/$count",q=De("/$count",!1),I=function(r){return r?[r]:[]},Y=function(r,t){r.push({xpr:t})},X=function(r,t){r.push({val:t})},J=function(r,t,e){r.push(t,...e)},Q=function(r,t){r.push(t)},W=function(r,t,e){r.push(t,...e)},G=":",H=De(":",!1),K="any",V=De("any",!1),rr="all",tr=De("all",!1),er=De("asc",!1),nr="desc",sr=De("desc",!1),or=function(r,t){return t},ur=/^[a-zA-Z0-9\-_.~]/,ar=Pe([["a","z"],["A","Z"],["0","9"],"-","_",".","~"],!1,!1),cr=/^[^&]/,ir=Pe(["&"],!0,!1),fr="$format=",lr=De("$format=",!1),hr=Fe("a comparison"),pr=De("eq",!1),Ar=De("ne",!1),dr=De("lt",!1),gr=De("gt",!1),mr=De("le",!1),vr=De("ge",!1),br=(De("add",!1),De("sub",!1),De("mul",!1),De("div",!1),De("mod",!1),Fe("an operand")),yr=Fe("navigation with $count"),Cr=function(r,t){return t},wr=function(r,t){return t?{id:r,where:t}:r},xr=Fe("a reference"),Er=function(r,t){return t},$r=function(r){return{val:r}},Lr=De("{",!1),Br=/^[^}]/,Sr=Pe(["}"],!0,!1),Tr=De("}",!1),_r="[",Or=De("[",!1),Rr="]",Zr=De("]",!1),jr=/^[^\]]/,Nr=Pe(["]"],!0,!1),kr=Fe("a function call"),zr=/^[a-zA-Z]/,Dr=Pe([["a","z"],["A","Z"]],!1,!1),Pr=function(r,t,e){return e},Fr=Fe("a boolean function"),Ur="contains",Mr=De("contains",!0),qr="endswith",Ir=De("endswith",!0),Yr="startswith",Xr=De("startswith",!0),Jr=De("NOT",!0),Qr=De("AND",!0),Wr=De("OR",!0),Gr="aggregate",Hr=De("aggregate",!1),Kr="groupby",Vr=De("groupby",!1),rt="filter",tt=De("filter",!1),et="search",nt=De("search",!1),st="concat",ot=De("concat",!1),ut="compute",at=De("compute",!1),ct=De("top",!1),it="skip",ft=De("skip",!1),lt="orderby",ht=De("orderby",!1),pt=De("topcount",!0),At=De("bottomcount",!0),dt=De("topsum",!0),gt=De("bottomsum",!0),mt=De("toppercent",!0),vt=De("bottompercent",!0),bt=function(r,t){return t},yt="with",Ct=De("with",!1),wt="from",xt=De("from",!1),Et=De("as",!1),$t="rollup",Lt=De("rollup",!1),Bt="$all",St=De("$all",!1),Tt=function(r,t){return t},_t="identity",Ot=De("identity",!1),Rt=function(r,t){return t},Zt="true",jt=De("true",!1),Nt="false",kt=De("false",!1),zt=Fe("Edm.String"),Dt="'",Pt=De("'",!1),Ft="''",Ut=De("''",!1),Mt=/^[^']/,qt=Pe(["'"],!0,!1),It='"',Yt=De('"',!1),Xt='\\"',Jt=De('\\"',!1),Qt=/^[^"]/,Wt=Pe(['"'],!0,!1),Gt=/^[^ \t\n()"&;]/,Ht=Pe([" ","\t","\n","(",")",'"',"&",";"],!0,!1),Kt=/^[0-9]/,Vt=Pe([["0","9"]],!1,!1),re="-",te=De("-",!1),ee=De("T",!1),ne=".",se=De(".",!1),oe=De("Z",!1),ue=De("+",!1),ae=/^[+\-]/,ce=Pe(["+","-"],!1,!1),ie=De("e",!1),fe=/^[_a-zA-Z]/,le=Pe(["_",["a","z"],["A","Z"]],!1,!1),he=/^[_a-zA-Z0-9"."]/,pe=Pe(["_",["a","z"],["A","Z"],["0","9"],'"',".",'"'],!1,!1),Ae=/^[0-9a-fA-F]/,de=Pe([["0","9"],["a","f"],["A","F"]],!1,!1),ge=/^[^\/?]/,me=Pe(["/","?"],!0,!1),ve=/^[a-zA-Z0-9\-"."_~!$'()*+,;=:@"\/""?"]/,be=Pe([["a","z"],["A","Z"],["0","9"],"-",'"',".",'"',"_","~","!","$","'","(",")","*","+",",",";","=",":","@",'"',"/",'"','"',"?",'"'],!1,!1),ye="binary'",Ce=De("binary'",!1),we=/^[a-zA-Z0-9\-_]/,xe=Pe([["a","z"],["A","Z"],["0","9"],"-","_"],!1,!1),Ee="==",$e=De("==",!1),Le=De(",",!1),Be=De("(",!1),Se=De(")",!1),Te=Fe("optional whitespaces"),_e=/^[ \t\n]/,Oe=Pe([" ","\t","\n"],!1,!1),Re=Fe("mandatory whitespaces"),Ze=0,je=[{line:1,column:1}],Ne=0,ke=[],ze=0;if("startRule"in t){if(!(t.startRule in s))throw new Error("Can't start parsing from rule \""+t.startRule+'".');o=s[t.startRule]}function De(r,t){return{type:"literal",text:r,ignoreCase:t}}function Pe(r,t,e){return{type:"class",parts:r,inverted:t,ignoreCase:e}}function Fe(r){return{type:"other",description:r}}function Ue(t){var e,n=je[t];if(n)return n;for(e=t-1;!je[e];)e--;for(n={line:(n=je[e]).line,column:n.column};e<t;)10===r.charCodeAt(e)?(n.line++,n.column=1):n.column++,e++;return je[t]=n,n}function Me(r,t){var e=Ue(r),n=Ue(t);return{start:{offset:r,line:e.line,column:e.column},end:{offset:t,line:n.line,column:n.column}}}function qe(r){Ze<Ne||(Ze>Ne&&(Ne=Ze,ke=[]),ke.push(r))}function Ie(r,t,e){return new peg$SyntaxError(peg$SyntaxError.buildMessage(r,t),r,t,e)}function Ye(){var t,e,s,o,f,l,h,p,A,d,g,m,v,b;if(t=Ze,47===r.charCodeAt(Ze)?(e=u,Ze++):(e=n,0===ze&&qe(a)),e===n&&(e=null),e!==n)if(s=Ze,(o=Xe())!==n&&(s,o=void(Yn=o)),(s=o)!==n){if(o=Ze,(f=Pn())!==n)if(63===r.charCodeAt(Ze)?(l="?",Ze++):(l=n,0===ze&&qe(c)),l!==n)if((h=Pn())!==n)if((p=Qe())!==n){for(A=[],d=Ze,(g=Pn())!==n?(38===r.charCodeAt(Ze)?(m="&",Ze++):(m=n,0===ze&&qe(i)),m!==n&&(v=Pn())!==n&&(b=Qe())!==n?d=g=[g,m,v,b]:(Ze=d,d=n)):(Ze=d,d=n);d!==n;)A.push(d),d=Ze,(g=Pn())!==n?(38===r.charCodeAt(Ze)?(m="&",Ze++):(m=n,0===ze&&qe(i)),m!==n&&(v=Pn())!==n&&(b=Qe())!==n?d=g=[g,m,v,b]:(Ze=d,d=n)):(Ze=d,d=n);A!==n?o=f=[f,l,h,p,A]:(Ze=o,o=n)}else Ze=o,o=n;else Ze=o,o=n;else Ze=o,o=n;else Ze=o,o=n;o===n&&(o=null),o!==n&&(f=Pn())!==n?(63===r.charCodeAt(Ze)?(l="?",Ze++):(l=n,0===ze&&qe(c)),l===n&&(l=null),l!==n&&(h=Pn())!==n?(t,t=e=function(){if(Xn)return Yn.columns=[{args:[{val:1}],as:"$count",func:"count"}],delete Yn.expand,delete Yn.limit,delete Yn.orderBy,Yn.apply?rs(Yn,Yn.apply):{SELECT:Yn};let r;if(Yn.expand){Yn.columns||(Yn.columns=["*"],r=!0);for(const r of Yn.expand){const t=Yn.columns.findIndex(Gn(r));t>-1&&Yn.columns.splice(t,1),Yn.columns.push(r)}delete Yn.expand}return Yn.count&&Yn.apply&&(Yn.__countAggregated=!0),Yn.apply?rs(Yn,Yn.apply,r):{SELECT:Yn}}()):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function Xe(){var t,e,s,o,c,i,m,v;return t=Ze,r.substr(Ze,6)===f?(e=f,Ze+=6):(e=n,0===ze&&qe(l)),e!==n&&(t,e=void(Xn=!0)),(t=e)===n&&(t=Ze,e=Ze,r.substr(Ze,4)===h?(s=h,Ze+=4):(s=n,0===ze&&qe(p)),s===n&&(r.substr(Ze,6)===A?(s=A,Ze+=6):(s=n,0===ze&&qe(d))),(e=s!==n?r.substring(e,Ze):s)!==n&&(t,v=e,e=!Jn.includes(v)&&{from:{ref:[v]}}),(t=e)===n&&(t=Ze,e=Ze,(s=Rn())!==n?(o=Ze,(c=zn())!==n&&(i=Dn())!==n?o=c=[c,i]:(Ze=o,o=n),o===n&&(o=Ze,(c=zn())!==n&&(i=Je())!==n&&(m=Dn())!==n?o=c=[c,i,m]:(Ze=o,o=n)),o===n&&(o=null),o!==n?(c=Ze,ze++,i=Nn(),ze--,i===n?c=void 0:(Ze=c,c=n),c!==n?e=s=[s,o,c]:(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n),e===n&&(e=Ze,(s=Nn())!==n&&(e,s=g(s)),e=s),e===n&&(e=null),e!==n?(s=Ze,o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(o,c=c),(o=c)!==n?((c=Xe())===n&&(c=null),c!==n?s=o=[o,c]:(Ze=s,s=n)):(Ze=s,s=n),s===n&&(s=null),s!==n?(t,t=e=function(r,t){if(t=t&&t[1],!r&&!t)return{from:{ref:[""]}};if(!r&&t&&t.from)return t.from.ref.unshift(""),t;const[e,n]=r,s=[];if(n?n.length>2?s.push({id:e,where:n[1].map((r=>r.val&&r.val.match&&r.val.match(/^"(.*)"$/)?{val:r.val.match(/^"(.*)"$/)[1]}:r))}):s.push({id:e,where:[]}):qn?s.push(`${"object"==typeof e&&"val"in e?e.val:e}`):"object"==typeof e&&"string"==typeof e.val&&e.val.match(/^[1-9]\d*$|^0$/)?s.push({val:Qn(e.val)}):s.push(e),t&&t.from){const r=t.from.ref;Object.prototype.hasOwnProperty.call(r[0],"val")&&(s[s.length-1]={id:s[s.length-1],where:[r.shift()]}),s.push(...r)}const o={from:{ref:s}};return t&&t.columns&&(o.columns=t.columns),o}(e,s)):(Ze=t,t=n)):(Ze=t,t=n))),t}function Je(){var t,e,s,o,u,a,c;return t=Ze,(e=pn())!==n&&(t,e=g(e)),(t=e)===n&&(t=Ze,(e=hn())!==n&&Pn()!==n?(61===r.charCodeAt(Ze)?(s="=",Ze++):(s=n,0===ze&&qe(v)),s!==n&&Pn()!==n&&(o=pn())!==n?(u=Ze,(a=kn())!==n&&(c=Je())!==n?u=a=[a,c]:(Ze=u,u=n),u===n&&(u=null),u!==n?(t,t=e=function(r,t,e){const n=[r,"=",t];return e&&n.push("and",...e[1]),n}(e,o,u)):(Ze=t,t=n)):(Ze=t,t=n)):(Ze=t,t=n)),t}function Qe(){var t,e,s,o,u;return t=Ze,(e=We())!==n&&(t,e=void((u=e)&&u.apply&&(Yn.apply=u.apply))),(t=e)===n&&(t=Ze,r.substr(Ze,11)===b?(e=b,Ze+=11):(e=n,0===ze&&qe(y)),e!==n&&(s=Pn())!==n?(o=function(){var t,e,s;t=Ze,(e=On())===n&&(e=null);e!==n?(s=function(){var t,e,s;t=Ze,e=[],ve.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(be));if(s!==n)for(;s!==n;)e.push(s),ve.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(be));else e=n;t=e!==n?r.substring(t,Ze):e;return t}(),s===n&&(s=null),s!==n?(t,o=e,t=e=void(s||ss(o))):(Ze=t,t=n)):(Ze=t,t=n);var o;return t}(),o!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=function(){var t,e,s,o,u;t=Ze,r.substr(Ze,8)===fr?(e=fr,Ze+=8):(e=n,0===ze&&qe(lr));if(e!==n){for(s=Ze,o=[],cr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(ir));u!==n;)o.push(u),cr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(ir));(s=o!==n?r.substring(s,Ze):o)!==n?(t,t=e=function(r){if("json"!==r.toLowerCase()){const r=new Error("ONLY_QUERY_PARAM_FORMAT_JSON_ALLOWED");throw r.statusCode=501,r}}(s)):(Ze=t,t=n)}else Ze=t,t=n;return t}(),t===n&&(t=function(){var t,e,s,o,u;t=Ze,e=[],ur.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(ar));if(s!==n)for(;s!==n;)e.push(s),ur.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(ar));else e=n;if(e!==n)if(61===r.charCodeAt(Ze)?(s=m,Ze++):(s=n,0===ze&&qe(v)),s!==n){for(o=[],cr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(ir));u!==n;)o.push(u),cr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(ir));o!==n?t=e=[e,s,o]:(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}()))),t}function We(){var t,e,s,o,u,a,c,i,f,l,h;if(t=Ze,r.substr(Ze,8)===C?(e=C,Ze+=8):(e=n,0===ze&&qe(w)),e!==n)if((s=Pn())!==n)if((o=Ge())!==n){for(u=[],a=Ze,(c=kn())!==n&&(i=Ge())!==n?a=c=[c,i]:(Ze=a,a=n);a!==n;)u.push(a),a=Ze,(c=kn())!==n&&(i=Ge())!==n?a=c=[c,i]:(Ze=a,a=n);u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;if(t===n){if(t=Ze,r.substr(Ze,8)===x?(e=x,Ze+=8):(e=n,0===ze&&qe(E)),e!==n)if((s=Pn())!==n)if((o=He())!==n){for(u=[],a=Ze,(c=kn())!==n&&(i=He())!==n?a=c=[c,i]:(Ze=a,a=n);a!==n;)u.push(a),a=Ze,(c=kn())!==n&&(i=He())!==n?a=c=[c,i]:(Ze=a,a=n);u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;if(t===n&&(t=Ze,r.substr(Ze,8)===$?(e=$,Ze+=8):(e=n,0===ze&&qe(L)),e!==n&&(s=Pn())!==n&&(o=en())!==n?(t,h=o,t=e=void(Yn.where=h)):(Ze=t,t=n),t===n)){if(t=Ze,r.substr(Ze,9)===B?(e=B,Ze+=9):(e=n,0===ze&&qe(S)),e!==n)if((s=Pn())!==n)if((o=an())!==n){for(u=[],a=Ze,(c=kn())!==n&&(i=an())!==n?(a,a=c=T(0,i)):(Ze=a,a=n);a!==n;)u.push(a),a=Ze,(c=kn())!==n&&(i=an())!==n?(a,a=c=T(0,i)):(Ze=a,a=n);u!==n?(t,t=e=void os(o,!0)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;t===n&&(t=Ze,r.substr(Ze,5)===_?(e=_,Ze+=5):(e=n,0===ze&&qe(O)),e!==n&&(s=Pn())!==n&&(o=Ke())!==n?(t,l=o,t=e=void((Yn.limit||(Yn.limit={})).rows={val:l})):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===R?(e=R,Ze+=6):(e=n,0===ze&&qe(Z)),e!==n&&(s=Pn())!==n&&(o=Ve())!==n?(t,e=function(r){ss(r)}(o),t=e):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,8)===j?(e=j,Ze+=8):(e=n,0===ze&&qe(N)),e!==n&&(s=Pn())!==n&&(o=rn())!==n?(t,t=e=void((f=o)&&(Yn.search=f))):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===k?(e=k,Ze+=7):(e=n,0===ze&&qe(z)),e!==n&&(s=Pn())!==n?(o=function(){var r,t;r=Ze,(t=Tn())!==n&&(r,t=function(r){r&&(Yn.count=!0)}(t));return r=t}(),o!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===D?(e=D,Ze+=7):(e=n,0===ze&&qe(P)),e!==n&&(s=Pn())!==n&&(o=cn())!==n?(t,t=e=o):(Ze=t,t=n))))))}}return t}function Ge(){var t,e,s;return t=Ze,42===r.charCodeAt(Ze)?(e="*",Ze++):(e=n,0===ze&&qe(F)),e===n&&(e=hn()),e!==n&&(t,s=e,Yn.columns=Array.isArray(Yn.columns)?Yn.columns:[],Yn.columns.find(Gn(s))||Yn.columns.push(s),e=s),t=e}function He(){var t,e,s,o,u,a,c,i,f;if(t=Ze,e=Ze,42===r.charCodeAt(Ze)?(s="*",Ze++):(s=n,0===ze&&qe(F)),s===n&&(s=hn()),s!==n&&(e,s=function(r){const t="*"===r?{}:r;return t.expand="*",Array.isArray(Yn.expand)||(Yn.expand=[]),Yn.expand.find(Gn(t))||Yn.expand.push(t),t}(s)),(e=s)!==n){if(s=Ze,o=Ze,(u=zn())!==n&&(o,In.push(Yn),Yn=Yn.expand[Yn.expand.length-1],u=void(Yn.expand="*")),(o=u)!==n){for(u=Ze,a=[],c=Ze,Pn()!==n?(59===r.charCodeAt(Ze)?(i=";",Ze++):(i=n,0===ze&&qe(U)),i===n&&(i=null),i!==n&&Pn()!==n&&(f=We())!==n?(c,c=f):(Ze=c,c=n)):(Ze=c,c=n);c!==n;)a.push(c),c=Ze,Pn()!==n?(59===r.charCodeAt(Ze)?(i=";",Ze++):(i=n,0===ze&&qe(U)),i===n&&(i=null),i!==n&&Pn()!==n&&(f=We())!==n?(c,c=f):(Ze=c,c=n)):(Ze=c,c=n);a!==n&&(u,a=function(r){if(r.find((r=>r&&void 0!==r.apply))){const r=new Error("EXPAND_APPLY_UNSUPPORTED");throw r.statusCode=501,r}if(Yn.columns){"*"===Yn.expand&&(Yn.expand=[]);for(const r of Yn.columns)Yn.expand.find(Gn(r))||Yn.expand.push(r);delete Yn.columns}else Array.isArray(Yn.expand)&&-1===Yn.expand.indexOf("*")&&Yn.expand.unshift("*")}(a)),(u=a)!==n?(a=Ze,(c=Dn())!==n&&(a,c=void(Yn=In.pop())),(a=c)!==n?s=o=[o,u,a]:(Ze=s,s=n)):(Ze=s,s=n)}else Ze=s,s=n;s===n&&(s=null),s!==n?(o=Ze,(u=kn())!==n&&(a=He())!==n?o=u=[u,a]:(Ze=o,o=n),o===n&&(o=null),o!==n?(u=Ze,r.substr(Ze,7)===M?(a=M,Ze+=7):(a=n,0===ze&&qe(q)),a!==n&&(u,a=function(){const r=new Error("EXPAND_COUNT_UNSUPPORTED");throw r.statusCode=501,r}()),(u=a)===n&&(u=null),u!==n?t=e=[e,s,o,u]:(Ze=t,t=n)):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}function Ke(){var r,t;return r=Ze,(t=On())!==n&&r,r=t}function Ve(){var r,t;return r=Ze,(t=On())!==n&&r,r=t}function rn(){var r,t;return r=Ze,(t=tn())!==n&&r,(r=t)===n&&(r=Pn()),r}function tn(){var t,e,s,o,u,a,c;if(t=Ze,e=Ze,(s=mn())===n&&(s=null),s!==n&&(e,s=I(s)),(e=s)!==n)if(s=Ze,(o=zn())!==n&&(u=tn())!==n&&(a=Dn())!==n?(s,s=o=Y(e,u)):(Ze=s,s=n),s===n&&(s=Ze,o=function(){var t,e,s,o,u;t=Ze,34===r.charCodeAt(Ze)?(e=It,Ze++):(e=n,0===ze&&qe(Yt));if(e!==n){for(s=Ze,o=[],r.substr(Ze,2)===Xt?(u=Xt,Ze+=2):(u=n,0===ze&&qe(Jt)),u===n&&(Qt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Wt)));u!==n;)o.push(u),r.substr(Ze,2)===Xt?(u=Xt,Ze+=2):(u=n,0===ze&&qe(Jt)),u===n&&(Qt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Wt)));(s=o!==n?r.substring(s,Ze):o)!==n?(34===r.charCodeAt(Ze)?(o=It,Ze++):(o=n,0===ze&&qe(Yt)),o!==n?(t,t=e=s.replace(/\\\\/g,"\\").replace(/\\"/g,'"')):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}(),o!==n&&(s,o=X(e,o)),(s=o)===n&&(s=Ze,(o=_n())!==n&&(s,o=X(e,o)),(s=o)===n&&(s=Ze,o=function(){var t,e,s;t=Ze,e=[],Gt.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Ht));if(s!==n)for(;s!==n;)e.push(s),Gt.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Ht));else e=n;t=e!==n?r.substring(t,Ze):e;return t}(),o!==n&&(s,o=X(e,o)),s=o))),s!==n){for(o=[],u=Ze,(a=vn())===n&&(a=yn())===n&&(a=bn()),a!==n&&(c=tn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);u!==n;)o.push(u),u=Ze,(a=vn())===n&&(a=yn())===n&&(a=bn()),a!==n&&(c=tn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);o!==n?(t,t=e):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function en(){var r,t;return r=Ze,(t=nn())!==n&&r,r=t}function nn(){var t,e,s,o,u,a,c,i;if(t=Ze,e=Ze,(s=mn())===n&&(s=null),s!==n&&(e,s=I(s)),(e=s)!==n)if(s=Ze,(o=zn())!==n&&(u=nn())!==n&&(a=Dn())!==n?(s,s=o=Y(e,u)):(Ze=s,s=n),s===n&&(s=Ze,(o=fn())!==n&&(s,i=o,o=void e.push(...i)),(s=o)===n&&(s=Ze,(o=sn())!==n&&(s,o=function(r,t){"not"===r[r.length-1]&&"not"===t[0]?r.push("(",...t,")"):r.push(...t)}(e,o)),(s=o)===n&&(s=Ze,o=function(){var t,e,s,o;ze++,t=Ze,r.substr(Ze,8).toLowerCase()===Ur?(e=r.substr(Ze,8),Ze+=8):(e=n,0===ze&&qe(Mr));e===n&&(r.substr(Ze,8).toLowerCase()===qr?(e=r.substr(Ze,8),Ze+=8):(e=n,0===ze&&qe(Ir)),e===n&&(r.substr(Ze,10).toLowerCase()===Yr?(e=r.substr(Ze,10),Ze+=10):(e=n,0===ze&&qe(Xr))));e!==n&&zn()!==n&&(s=ln())!==n&&kn()!==n&&(o=ln())!==n&&Dn()!==n?(t,u=s,a=o,t=e={func:e.toLowerCase(),args:[u,a]}):(Ze=t,t=n);var u,a;ze--,t===n&&(e=n,0===ze&&qe(Fr));return t}(),o!==n&&(s,o=function(r,t){r.push(t)}(e,o)),(s=o)===n&&(s=Ze,(o=Tn())!==n&&(s,o=X(e,o)),s=o)))),s!==n){for(o=[],u=Ze,(a=vn())===n&&(a=yn()),a!==n&&(c=nn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);u!==n;)o.push(u),u=Ze,(a=vn())===n&&(a=yn()),a!==n&&(c=nn())!==n?(u,u=a=J(e,a,c)):(Ze=u,u=n);o!==n?(t,t=e):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function sn(){var t,e,s,o,c,i,f;if(t=Ze,e=Ze,(s=Rn())!==n&&(e,s=[s]),(e=s)!==n)if(47===r.charCodeAt(Ze)?(s=u,Ze++):(s=n,0===ze&&qe(a)),s!==n){for(o=[],c=Ze,(i=Rn())!==n?(47===r.charCodeAt(Ze)?(f=u,Ze++):(f=n,0===ze&&qe(a)),f!==n?(c,c=i=Q(e,i)):(Ze=c,c=n)):(Ze=c,c=n);c!==n;)o.push(c),c=Ze,(i=Rn())!==n?(47===r.charCodeAt(Ze)?(f=u,Ze++):(f=n,0===ze&&qe(a)),f!==n?(c,c=i=Q(e,i)):(Ze=c,c=n)):(Ze=c,c=n);o!==n?(c=Ze,i=function(){var t,e,s;t=Ze,r.substr(Ze,3)===K?(e=K,Ze+=3):(e=n,0===ze&&qe(V));e!==n&&zn()!==n?((s=un())===n&&(s=null),s!==n&&Dn()!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n);return t}(),i!==n&&(c,i=function(r,t){let e=r.pop();if(!t)return["exists",{ref:[...r,{id:e}]}];let n=[];for(let r=0,s=0;r<t.length;++r){let o=t[r];o.ref&&0===o.ref.length&&"="===t[r+1]?n[s++]={func:"contains",args:[{ref:e},t[r+=2]]}:n[s++]=o}return n.length<t.length?(e=r.pop(),["exists",{ref:[...r,{id:e,where:n}]}]):["exists",{ref:[...r,{id:e,where:t}]}]}(e,i)),(c=i)===n&&(c=Ze,i=function(){var t,e,s;t=Ze,r.substr(Ze,3)===rr?(e=rr,Ze+=3):(e=n,0===ze&&qe(tr));e!==n&&zn()!==n&&(s=un())!==n&&Dn()!==n?(t,t=e=s):(Ze=t,t=n);return t}(),i!==n&&(c,i=function(r,t){let e=r.pop();return["not","exists",{ref:[...r,{id:e,where:["not",{xpr:[...t]}]}]}]}(e,i)),c=i),c!==n?(t,t=e=c):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function on(){var r,t,e,s,o,u,a,c,i;if(r=Ze,t=Ze,(e=mn())===n&&(e=null),e!==n&&(t,e=(c=e)?[c]:[]),(t=e)!==n)if(e=Ze,(s=zn())!==n&&(o=on())!==n&&(u=Dn())!==n?(e,i=o,e=s=void t.push("(",...i,")")):(Ze=e,e=n),e===n&&(e=Ze,(s=fn())!==n&&(e,s=function(r,t){r.push(...t)}(t,s)),(e=s)===n&&(e=Ze,(s=gn())!==n&&(e,s=function(r,t){r.push(t)}(t,s)),(e=s)===n&&(e=Ze,(s=sn())!==n&&(e,s=function(r,t){r.push(...t)}(t,s)),e=s))),e!==n){for(s=[],o=Ze,(u=vn())===n&&(u=yn()),u!==n&&(a=on())!==n?(o,o=u=W(t,u,a)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,(u=vn())===n&&(u=yn()),u!==n&&(a=on())!==n?(o,o=u=W(t,u,a)):(Ze=o,o=n);s!==n?(r,r=t):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;return r}function un(){var t,e,s,o;return t=Ze,(e=Rn())!==n?(58===r.charCodeAt(Ze)?(s=G,Ze++):(s=n,0===ze&&qe(H)),s!==n&&(o=on())!==n?(t,t=e=us(e,o)):(Ze=t,t=n)):(Ze=t,t=n),t}function an(){var t,e,s,o,u,a;return t=Ze,e=Ze,(s=sn())!==n&&(e,s=function(){const r=new Error("ORDERBY_LAMBDA_UNSUPPORTED");throw r.statusCode=501,r}()),(e=s)===n&&(e=gn())===n&&(e=hn()),e!==n?(s=Ze,Fn()!==n?(o=Ze,"asc"===r.substr(Ze,3)?(u="asc",Ze+=3):(u=n,0===ze&&qe(er)),u===n&&(r.substr(Ze,4)===nr?(u=nr,Ze+=4):(u=n,0===ze&&qe(sr))),(o=u!==n?r.substring(o,Ze):u)!==n?(s,s=o):(Ze=s,s=n)):(Ze=s,s=n),s===n&&(s=null),s!==n?(t,t=e=Un(e,(a=s)&&{sort:a})):(Ze=t,t=n)):(Ze=t,t=n),t}function cn(){var t,e,s,o,c,i;if(t=Ze,(e=Cn())!==n){for(s=[],o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Cn())!==n?(o,o=c=or(0,i)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Cn())!==n?(o,o=c=or(0,i)):(Ze=o,o=n);s!==n?(t,t=e=function(r,t){if(void 0!==r){t=Array.isArray(t)?t:[t];for(let e of t)for(const t in e)if("limit"===t&&e.limit&&r.limit&&r.limit.offset&&e.limit.rows)r.limit.rows=e.limit.rows;else if(r[t]||"groupBy"===t&&(r.where||r.search)||"aggregate"===t&&"groupBy"in r&&!("groupBy"in e)){let n=r;r={apply:n},"limit"===t&&e[t].offset&&n.limit&&n.limit.offset&&n.limit.offset.val&&(e[t].offset+=n.limit.offset.val),n=r,n[t]=e[t]}else r[t]=e[t];return{apply:r}}}(e,s)):(Ze=t,t=n)}else Ze=t,t=n;return t}function fn(){var t,e,s,o,u,a;return ze++,t=Ze,(e=ln())!==n&&Fn()!==n?(s=Ze,"eq"===r.substr(Ze,2)?(o="eq",Ze+=2):(o=n,0===ze&&qe(pr)),o===n&&("ne"===r.substr(Ze,2)?(o="ne",Ze+=2):(o=n,0===ze&&qe(Ar)),o===n&&("lt"===r.substr(Ze,2)?(o="lt",Ze+=2):(o=n,0===ze&&qe(dr)),o===n&&("gt"===r.substr(Ze,2)?(o="gt",Ze+=2):(o=n,0===ze&&qe(gr)),o===n&&("le"===r.substr(Ze,2)?(o="le",Ze+=2):(o=n,0===ze&&qe(mr)),o===n&&("ge"===r.substr(Ze,2)?(o="ge",Ze+=2):(o=n,0===ze&&qe(vr))))))),(s=o!==n?r.substring(s,Ze):o)!==n&&(o=Fn())!==n&&(u=ln())!==n?(t,t=e=[e,{eq:"=",ne:"!=",lt:"<",gt:">",le:"<=",ge:">="}[a=s]||a,u]):(Ze=t,t=n)):(Ze=t,t=n),ze--,t===n&&(e=n,0===ze&&qe(hr)),t}function ln(){var t;return ze++,t=function(){var t,e,s,o,c,i,h;ze++,t=Ze,e=[],s=Ze,(o=Rn())!==n?(c=Ze,(i=zn())!==n&&(h=Je())!==n&&Dn()!==n?(c,c=i=Cr(0,h)):(Ze=c,c=n),c===n&&(c=null),c!==n?(47===r.charCodeAt(Ze)?(i=u,Ze++):(i=n,0===ze&&qe(a)),i!==n?(s,s=o=wr(o,c)):(Ze=s,s=n)):(Ze=s,s=n)):(Ze=s,s=n);if(s!==n)for(;s!==n;)e.push(s),s=Ze,(o=Rn())!==n?(c=Ze,(i=zn())!==n&&(h=Je())!==n&&Dn()!==n?(c,c=i=Cr(0,h)):(Ze=c,c=n),c===n&&(c=null),c!==n?(47===r.charCodeAt(Ze)?(i=u,Ze++):(i=n,0===ze&&qe(a)),i!==n?(s,s=o=wr(o,c)):(Ze=s,s=n)):(Ze=s,s=n)):(Ze=s,s=n);else e=n;e!==n?(r.substr(Ze,6)===f?(s=f,Ze+=6):(s=n,0===ze&&qe(l)),s!==n?(t,t=e={func:"count",as:"$count",args:[{ref:e}]}):(Ze=t,t=n)):(Ze=t,t=n);ze--,t===n&&(e=n,0===ze&&qe(yr));return t}(),t===n&&(t=gn())===n&&(t=pn())===n&&(t=hn())===n&&(t=An())===n&&(t=dn())===n&&(t=function(){var t,e,s,o,u;t=Ze,91===r.charCodeAt(Ze)?(e=_r,Ze++):(e=n,0===ze&&qe(Or));if(e!==n){for(s=Ze,o=[],jr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Nr));u!==n;)o.push(u),jr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Nr));(s=o!==n?r.substring(s,Ze):o)!==n?(93===r.charCodeAt(Ze)?(o=Rr,Ze++):(o=n,0===ze&&qe(Zr)),o!==n?(t,t=e={list:s.replace(/"/g,"").split(",").map((r=>({val:r})))}):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}()),ze--,t===n&&(n,0===ze&&qe(br)),t}function hn(){var t,e,s,o,c,i,f,l;if(ze++,t=Ze,(e=Rn())!==n){for(s=[],o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Rn())!==n?(o,o=c=Er(0,i)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,47===r.charCodeAt(Ze)?(c=u,Ze++):(c=n,0===ze&&qe(a)),c!==n&&(i=Rn())!==n?(o,o=c=Er(0,i)):(Ze=o,o=n);s!==n?(t,l=s,t=e="null"===(f=e)?{val:null}:{ref:[f,...l]}):(Ze=t,t=n)}else Ze=t,t=n;return ze--,t===n&&(e=n,0===ze&&qe(xr)),t}function pn(){var t,e,s;return t=Ze,(e=Tn())===n&&(e=function(){var t,e,s,o,u,a,c,i,f,l,h,p,A,d,g,m,v,b,y,C,w,x,E,$,L;t=Ze,e=Ze,s=Ze,o=[],Kt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Vt));if(u!==n)for(;u!==n;)o.push(u),Kt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Vt));else o=n;if(o!==n)if(45===r.charCodeAt(Ze)?(u=re,Ze++):(u=n,0===ze&&qe(te)),u!==n)if(Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt)),a!==n)if(Kt.test(r.charAt(Ze))?(c=r.charAt(Ze),Ze++):(c=n,0===ze&&qe(Vt)),c!==n)if(45===r.charCodeAt(Ze)?(i=re,Ze++):(i=n,0===ze&&qe(te)),i!==n)if(Kt.test(r.charAt(Ze))?(f=r.charAt(Ze),Ze++):(f=n,0===ze&&qe(Vt)),f!==n)if(Kt.test(r.charAt(Ze))?(l=r.charAt(Ze),Ze++):(l=n,0===ze&&qe(Vt)),l!==n){if(h=Ze,84===r.charCodeAt(Ze)?(p="T",Ze++):(p=n,0===ze&&qe(ee)),p!==n)if(Kt.test(r.charAt(Ze))?(A=r.charAt(Ze),Ze++):(A=n,0===ze&&qe(Vt)),A!==n)if(Kt.test(r.charAt(Ze))?(d=r.charAt(Ze),Ze++):(d=n,0===ze&&qe(Vt)),d!==n)if(58===r.charCodeAt(Ze)?(g=G,Ze++):(g=n,0===ze&&qe(H)),g!==n)if(Kt.test(r.charAt(Ze))?(m=r.charAt(Ze),Ze++):(m=n,0===ze&&qe(Vt)),m!==n)if(Kt.test(r.charAt(Ze))?(v=r.charAt(Ze),Ze++):(v=n,0===ze&&qe(Vt)),v!==n){if(b=Ze,58===r.charCodeAt(Ze)?(y=G,Ze++):(y=n,0===ze&&qe(H)),y!==n)if(Kt.test(r.charAt(Ze))?(C=r.charAt(Ze),Ze++):(C=n,0===ze&&qe(Vt)),C!==n)if(Kt.test(r.charAt(Ze))?(w=r.charAt(Ze),Ze++):(w=n,0===ze&&qe(Vt)),w!==n){if(x=Ze,46===r.charCodeAt(Ze)?(E=".",Ze++):(E=n,0===ze&&qe(se)),E!==n){if($=[],Kt.test(r.charAt(Ze))?(L=r.charAt(Ze),Ze++):(L=n,0===ze&&qe(Vt)),L!==n)for(;L!==n;)$.push(L),Kt.test(r.charAt(Ze))?(L=r.charAt(Ze),Ze++):(L=n,0===ze&&qe(Vt));else $=n;$!==n?x=E=[E,$]:(Ze=x,x=n)}else Ze=x,x=n;x===n&&(x=null),x!==n?b=y=[y,C,w,x]:(Ze=b,b=n)}else Ze=b,b=n;else Ze=b,b=n;else Ze=b,b=n;b===n&&(b=null),b!==n?(90===r.charCodeAt(Ze)?(y="Z",Ze++):(y=n,0===ze&&qe(oe)),y===n&&(y=Ze,43===r.charCodeAt(Ze)?(C="+",Ze++):(C=n,0===ze&&qe(ue)),C===n&&(45===r.charCodeAt(Ze)?(C=re,Ze++):(C=n,0===ze&&qe(te))),C!==n?(Kt.test(r.charAt(Ze))?(w=r.charAt(Ze),Ze++):(w=n,0===ze&&qe(Vt)),w!==n?(Kt.test(r.charAt(Ze))?(x=r.charAt(Ze),Ze++):(x=n,0===ze&&qe(Vt)),x!==n?(58===r.charCodeAt(Ze)?(E=G,Ze++):(E=n,0===ze&&qe(H)),E!==n?(Kt.test(r.charAt(Ze))?($=r.charAt(Ze),Ze++):($=n,0===ze&&qe(Vt)),$!==n?(Kt.test(r.charAt(Ze))?(L=r.charAt(Ze),Ze++):(L=n,0===ze&&qe(Vt)),L!==n?y=C=[C,w,x,E,$,L]:(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)):(Ze=y,y=n)),y===n&&(y=null),y!==n?h=p=[p,A,d,g,m,v,b,y]:(Ze=h,h=n)):(Ze=h,h=n)}else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;else Ze=h,h=n;h===n&&(h=null),h!==n?s=o=[o,u,a,c,i,f,l,h]:(Ze=s,s=n)}else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;e=s!==n?r.substring(e,Ze):s;e!==n&&(t,e=function(r){if(r.split("-")[0].length>4)throw Object.assign(new Error(`The type 'Edm.DateTimeOffset' is not compatible with '${r}'`),{statusCode:400});return r}(e));return t=e}()),e!==n&&(t,e=$r(e)),(t=e)===n&&(t=Ze,(e=Zn())!==n&&(t,e=$r(e)),(t=e)===n&&(t=Ze,e=function(){var t,e,s,o,u,a,c,i,f,l;t=Ze,e=Ze,s=Ze,ae.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ce));o===n&&(o=null);if(o!==n){if(u=[],Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt)),a!==n)for(;a!==n;)u.push(a),Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt));else u=n;if(u!==n){if(a=Ze,46===r.charCodeAt(Ze)?(c=ne,Ze++):(c=n,0===ze&&qe(se)),c!==n){if(i=[],Kt.test(r.charAt(Ze))?(f=r.charAt(Ze),Ze++):(f=n,0===ze&&qe(Vt)),f!==n)for(;f!==n;)i.push(f),Kt.test(r.charAt(Ze))?(f=r.charAt(Ze),Ze++):(f=n,0===ze&&qe(Vt));else i=n;i!==n?a=c=[c,i]:(Ze=a,a=n)}else Ze=a,a=n;if(a===n&&(a=null),a!==n){if(c=Ze,101===r.charCodeAt(Ze)?(i="e",Ze++):(i=n,0===ze&&qe(ie)),i!==n){if(f=[],Kt.test(r.charAt(Ze))?(l=r.charAt(Ze),Ze++):(l=n,0===ze&&qe(Vt)),l!==n)for(;l!==n;)f.push(l),Kt.test(r.charAt(Ze))?(l=r.charAt(Ze),Ze++):(l=n,0===ze&&qe(Vt));else f=n;f!==n?c=i=[i,f]:(Ze=c,c=n)}else Ze=c,c=n;c===n&&(c=null),c!==n?s=o=[o,u,a,c]:(Ze=s,s=n)}else Ze=s,s=n}else Ze=s,s=n}else Ze=s,s=n;e=s!==n?r.substring(e,Ze):s;e!==n&&(t,e=Qn(e));return t=e}(),e!==n&&(t,e="number"==typeof(s=e)?{val:s}:{val:s,literal:"number"}),(t=e)===n&&(t=Ze,(e=_n())!==n&&(t,e=$r(e)),(t=e)===n&&(t=Ze,e=function(){var t,e,s,o,u,a;t=Ze,r.substr(Ze,7)===ye?(e=ye,Ze+=7):(e=n,0===ze&&qe(Ce));if(e!==n){if(s=Ze,o=Ze,u=[],we.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(xe)),a!==n)for(;a!==n;)u.push(a),we.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(xe));else u=n;u!==n?(r.substr(Ze,2)===Ee?(a=Ee,Ze+=2):(a=n,0===ze&&qe($e)),a===n&&(61===r.charCodeAt(Ze)?(a=m,Ze++):(a=n,0===ze&&qe(v))),a===n&&(a=null),a!==n?o=u=[u,a]:(Ze=o,o=n)):(Ze=o,o=n),(s=o!==n?r.substring(s,Ze):o)!==n?(39===r.charCodeAt(Ze)?(o=Dt,Ze++):(o=n,0===ze&&qe(Pt)),o!==n?(t,t=e=Wn(s)):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return t}(),e!==n&&(t,e=$r(e)),t=e)))),t}function An(){var t,e,s,o,u,a;if(t=Ze,e=Ze,s=Ze,123===r.charCodeAt(Ze)?(o="{",Ze++):(o=n,0===ze&&qe(Lr)),o!==n){for(u=[],(a=An())===n&&(Br.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Sr)));a!==n;)u.push(a),(a=An())===n&&(Br.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Sr)));u!==n?(125===r.charCodeAt(Ze)?(a="}",Ze++):(a=n,0===ze&&qe(Tr)),a!==n?s=o=[o,u,a]:(Ze=s,s=n)):(Ze=s,s=n)}else Ze=s,s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e=$r(e)),t=e}function dn(){var t,e,s,o,u,a,c,i;if(t=Ze,e=Ze,s=Ze,91===r.charCodeAt(Ze)?(o=_r,Ze++):(o=n,0===ze&&qe(Or)),o!==n&&(u=Pn())!==n?(93===r.charCodeAt(Ze)?(a=Rr,Ze++):(a=n,0===ze&&qe(Zr)),a!==n?s=o=[o,u,a]:(Ze=s,s=n)):(Ze=s,s=n),s===n)if(s=Ze,91===r.charCodeAt(Ze)?(o=_r,Ze++):(o=n,0===ze&&qe(Or)),o!==n)if((u=Pn())!==n)if(123===r.charCodeAt(Ze)?(a="{",Ze++):(a=n,0===ze&&qe(Lr)),a!==n){for(c=[],(i=dn())===n&&(jr.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(Nr)));i!==n;)c.push(i),(i=dn())===n&&(jr.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(Nr)));c!==n?(93===r.charCodeAt(Ze)?(i=Rr,Ze++):(i=n,0===ze&&qe(Zr)),i!==n?s=o=[o,u,a,c,i]:(Ze=s,s=n)):(Ze=s,s=n)}else Ze=s,s=n;else Ze=s,s=n;else Ze=s,s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e=$r(e)),t=e}function gn(){var t,e,s,o,u,a,c;if(ze++,t=Ze,e=Ze,s=[],zr.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(Dr)),o!==n)for(;o!==n;)s.push(o),zr.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(Dr));else s=n;if((e=s!==n?r.substring(e,Ze):s)!==n)if((s=zn())!==n)if((o=ln())!==n){for(u=[],a=Ze,kn()!==n&&(c=ln())!==n?(a,a=Pr(0,0,c)):(Ze=a,a=n);a!==n;)u.push(a),a=Ze,kn()!==n&&(c=ln())!==n?(a,a=Pr(0,0,c)):(Ze=a,a=n);u!==n&&(a=Dn())!==n?(t,t=e=function(r,t,e){if(Mn&&!(r.toLowerCase()in Mn.functions))throw Object.assign(new Error(`"${r}" is an unknown function in OData URL spec (strict mode)`),{statusCode:400});return{func:r.toLowerCase(),args:[t,...e]}}(e,o,u)):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;return ze--,t===n&&(e=n,0===ze&&qe(kr)),t}function mn(){var t,e;return t=Ze,Pn()!==n?("not"===r.substr(Ze,3).toLowerCase()?(e=r.substr(Ze,3),Ze+=3):(e=n,0===ze&&qe(Jr)),e!==n&&Fn()!==n?(t,t="not"):(Ze=t,t=n)):(Ze=t,t=n),t}function vn(){var t,e;return t=Ze,Fn()!==n?("and"===r.substr(Ze,3).toLowerCase()?(e=r.substr(Ze,3),Ze+=3):(e=n,0===ze&&qe(Qr)),e!==n&&Fn()!==n?(t,t="and"):(Ze=t,t=n)):(Ze=t,t=n),t}function bn(){var r,t;return r=Ze,(t=Fn())!==n&&(r,t="and"),r=t}function yn(){var t,e;return t=Ze,Fn()!==n?("or"===r.substr(Ze,2).toLowerCase()?(e=r.substr(Ze,2),Ze+=2):(e=n,0===ze&&qe(Wr)),e!==n&&Fn()!==n?(t,t="or"):(Ze=t,t=n)):(Ze=t,t=n),t}function Cn(){var t,e,s;return t=Ze,r.substr(Ze,9)===Gr?(e=Gr,Ze+=9):(e=n,0===ze&&qe(Hr)),e!==n?(s=function(){var r,t,e,s,o;if(r=Ze,zn()!==n)if(Pn()!==n)if((t=wn())!==n){for(e=[],s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=wn())!==n?(s,s=bt(0,o)):(Ze=s,s=n);s!==n;)e.push(s),s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=wn())!==n?(s,s=bt(0,o)):(Ze=s,s=n);e!==n&&(s=Pn())!==n&&Dn()!==n?(r,u=e,r={aggregate:[t,...u]}):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var u;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===Kr?(e=Kr,Ze+=7):(e=n,0===ze&&qe(Vr)),e!==n?(s=function(){var r,t,e,s,o,u,a,c;if(r=Ze,(t=zn())!==n)if(zn()!==n)if((e=Bn())!==n){for(s=[],o=Ze,(u=kn())!==n&&(a=Bn())!==n?(o,o=u=bt(0,a)):(Ze=o,o=n);o!==n;)s.push(o),o=Ze,(u=kn())!==n&&(a=Bn())!==n?(o,o=u=bt(0,a)):(Ze=o,o=n);s!==n?(o=Ze,(u=Dn())!==n&&(o,i=s,u={groupBy:[e,...i]}),(o=u)!==n?(u=Ze,(a=kn())!==n&&(c=cn())!==n?(u,u=a=c):(Ze=u,u=n),u===n&&(u=null),u!==n&&(a=Dn())!==n?(r,t=function(r,t,e){let n={};return n=e?{groupBy:[r,...t],...e.apply}:{groupBy:[r,...t]},n}(e,s,u),r=t):(Ze=r,r=n)):(Ze=r,r=n)):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var i;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===rt?(e=rt,Ze+=6):(e=n,0===ze&&qe(tt)),e!==n?(s=function(){var r,t,e;r=Ze,zn()!==n&&Pn()!==n?(t=Ze,(e=en())!==n&&t,(t=e)!==n&&(e=Pn())!==n&&Dn()!==n?(r,r={where:t}):(Ze=r,r=n)):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===et?(e=et,Ze+=6):(e=n,0===ze&&qe(nt)),e!==n?(s=function(){var r,t,e;r=Ze,zn()!==n&&Pn()!==n?(t=Ze,(e=rn())!==n&&(t,e=function(r){if(r)return r}(e)),(t=e)!==n&&(e=Pn())!==n&&Dn()!==n?(r,r={search:t}):(Ze=r,r=n)):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,6)===st?(e=st,Ze+=6):(e=n,0===ze&&qe(ot)),e!==n?(s=function(){var r,t,e,s,o;if(r=Ze,zn()!==n)if(Pn()!==n)if((t=cn())!==n){if(e=[],s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=cn())!==n?(s,s=Tt(0,o)):(Ze=s,s=n),s!==n)for(;s!==n;)e.push(s),s=Ze,Pn()!==n&&kn()!==n&&Pn()!==n&&(o=cn())!==n?(s,s=Tt(0,o)):(Ze=s,s=n);else e=n;e!==n&&(s=Pn())!==n&&Dn()!==n?(r,u=e,r={concat:[t,...u]}):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var u;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===ut?(e=ut,Ze+=7):(e=n,0===ze&&qe(at)),e!==n?(s=function(){var r,t,e,s,o,u,a,c,i,f;if(r=Ze,(t=zn())!==n)if((e=Pn())!==n)if((s=Sn())!==n){for(o=[],u=Ze,(a=Pn())!==n&&(c=kn())!==n&&(i=Pn())!==n&&(f=Sn())!==n?u=a=[a,c,i,f]:(Ze=u,u=n);u!==n;)o.push(u),u=Ze,(a=Pn())!==n&&(c=kn())!==n&&(i=Pn())!==n&&(f=Sn())!==n?u=a=[a,c,i,f]:(Ze=u,u=n);o!==n&&(u=Pn())!==n&&(a=Dn())!==n?r=t=[t,e,s,o,u,a]:(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,"top"===r.substr(Ze,3)?(e="top",Ze+=3):(e=n,0===ze&&qe(ct)),e!==n?(s=function(){var r,t;r=Ze,zn()!==n&&Pn()!==n&&(t=Ke())!==n&&Pn()!==n&&Dn()!==n?(r,r={limit:{rows:{val:t}}}):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,4)===it?(e=it,Ze+=4):(e=n,0===ze&&qe(ft)),e!==n?(s=function(){var r,t;r=Ze,zn()!==n&&Pn()!==n&&(t=Ve())!==n&&Pn()!==n&&Dn()!==n?(r,r={limit:{offset:{val:t}}}):(Ze=r,r=n);return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,r.substr(Ze,7)===lt?(e=lt,Ze+=7):(e=n,0===ze&&qe(ht)),e!==n?(s=function(){var r,t,e,s,o;if(r=Ze,zn()!==n)if(Pn()!==n)if((t=an())!==n){for(e=[],s=Ze,kn()!==n&&(o=an())!==n?(s,s=Rt(0,o)):(Ze=s,s=n);s!==n;)e.push(s),s=Ze,kn()!==n&&(o=an())!==n?(s,s=Rt(0,o)):(Ze=s,s=n);e!==n&&(s=Pn())!==n&&Dn()!==n?(r,u=e,r={orderBy:[t,...u]}):(Ze=r,r=n)}else Ze=r,r=n;else Ze=r,r=n;else Ze=r,r=n;var u;return r}(),s!==n?(t,t=e=s):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,"topcount"===r.substr(Ze,8).toLowerCase()?(e=r.substr(Ze,8),Ze+=8):(e=n,0===ze&&qe(pt)),e===n&&("bottomcount"===r.substr(Ze,11).toLowerCase()?(e=r.substr(Ze,11),Ze+=11):(e=n,0===ze&&qe(At)),e===n&&("topsum"===r.substr(Ze,6).toLowerCase()?(e=r.substr(Ze,6),Ze+=6):(e=n,0===ze&&qe(dt)),e===n&&("bottomsum"===r.substr(Ze,9).toLowerCase()?(e=r.substr(Ze,9),Ze+=9):(e=n,0===ze&&qe(gt)),e===n&&("toppercent"===r.substr(Ze,10).toLowerCase()?(e=r.substr(Ze,10),Ze+=10):(e=n,0===ze&&qe(mt)),e===n&&("bottompercent"===r.substr(Ze,13).toLowerCase()?(e=r.substr(Ze,13),Ze+=13):(e=n,0===ze&&qe(vt))))))),e!==n?(s=function(){var r,t,e;r=Ze,zn()!==n&&Pn()!==n&&(t=ln())!==n&&Pn()!==n&&kn()!==n&&Pn()!==n&&(e=ln())!==n&&Pn()!==n&&Dn()!==n?(r,r=[t,e]):(Ze=r,r=n);return r}(),s!==n?(t,t=e=function(r,t){if(!{topcount:!0,bottomcount:!0,topsum:!1,bottomsum:!1,toppercent:!1,bottompercent:!1}[r=r.toLowerCase()])throw Object.assign(new Error(`Transformation "${r}" in $apply is not yet supported.`),{statusCode:501});return{aggregate:[{func:r,args:t}]}}(e,s)):(Ze=t,t=n)):(Ze=t,t=n),t===n&&(t=Ze,e=function(){var t,e;t=Ze,r.substr(Ze,8)===_t?(e=_t,Ze+=8):(e=n,0===ze&&qe(Ot));e!==n&&(t,e={identity:!0});return t=e}(),e!==n&&t,t=e)))))))))),t}function wn(){var t,e,s,o;return t=Ze,e=Ze,r.substr(Ze,6)===f?(s=f,Ze+=6):(s=n,0===ze&&qe(l)),s!==n&&(o=Ln())!==n?(e,e=s={func:"count",args:[{val:1}],as:o}):(Ze=e,e=n),e===n&&(e=xn()),e!==n&&t,t=e}function xn(){var r,t,e,s,o;return r=Ze,(t=hn())!==n?((e=En())===n&&(e=null),e!==n?((s=$n())===n&&(s=null),s!==n?((o=Ln())===n&&(o=null),o!==n?(r,r=t={func:e,args:[t],as:o}):(Ze=r,r=n)):(Ze=r,r=n)):(Ze=r,r=n)):(Ze=r,r=n),r===n&&(r=Ze,(t=Rn())!==n&&(e=zn())!==n&&(s=xn())!==n&&(o=Dn())!==n?r=t=[t,e,s,o]:(Ze=r,r=n)),r}function En(){var t,e,s,o,u;if(t=Ze,Fn()!==n)if(r.substr(Ze,4)===yt?(e=yt,Ze+=4):(e=n,0===ze&&qe(Ct)),e!==n)if(Fn()!==n){if(s=Ze,o=[],zr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Dr)),u!==n)for(;u!==n;)o.push(u),zr.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(Dr));else o=n;(s=o!==n?r.substring(s,Ze):o)!==n?(t,t=s.toLowerCase()):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;else Ze=t,t=n;return t}function $n(){var t,e,s,o,u,a,c;return t=Ze,(e=Fn())!==n?(r.substr(Ze,4)===wt?(s=wt,Ze+=4):(s=n,0===ze&&qe(xt)),s!==n&&(o=Fn())!==n&&(u=hn())!==n&&(a=En())!==n?((c=$n())===n&&(c=null),c!==n?t=e=[e,s,o,u,a,c]:(Ze=t,t=n)):(Ze=t,t=n)):(Ze=t,t=n),t}function Ln(){var t,e,s;return t=Ze,Fn()!==n?("as"===r.substr(Ze,2)?(e="as",Ze+=2):(e=n,0===ze&&qe(Et)),e!==n&&Fn()!==n&&(s=Rn())!==n?(t,t=s):(Ze=t,t=n)):(Ze=t,t=n),t}function Bn(){var t,e;return t=Ze,e=function(){var t,e,s,o,u,a,c,i,f,l,h;t=Ze,e=Ze,r.substr(Ze,6)===$t?(s=$t,Ze+=6):(s=n,0===ze&&qe(Lt));if(s!==n)if((o=zn())!==n)if((u=Pn())!==n)if(r.substr(Ze,4)===Bt?(a=Bt,Ze+=4):(a=n,0===ze&&qe(St)),a===n&&(a=hn()),a!==n){if(c=[],i=Ze,(f=Pn())!==n&&(l=kn())!==n&&(h=hn())!==n?i=f=[f,l,h]:(Ze=i,i=n),i!==n)for(;i!==n;)c.push(i),i=Ze,(f=Pn())!==n&&(l=kn())!==n&&(h=hn())!==n?i=f=[f,l,h]:(Ze=i,i=n);else c=n;c!==n&&(i=Pn())!==n&&(f=Dn())!==n?e=s=[s,o,u,a,c,i,f]:(Ze=e,e=n)}else Ze=e,e=n;else Ze=e,e=n;else Ze=e,e=n;else Ze=e,e=n;e!==n&&(t,e=function(r){const t=new Error("Rollup in groupby is not supported yet.");throw t.statusCode=501,t}());return t=e}(),e===n&&(e=hn()),e!==n&&t,t=e}function Sn(){var r,t,e;return r=Ze,(t=nn())!==n&&(e=Ln())!==n?r=t=[t,e]:(Ze=r,r=n),r}function Tn(){var t,e;return t=Ze,r.substr(Ze,4)===Zt?(e=Zt,Ze+=4):(e=n,0===ze&&qe(jt)),e===n&&(r.substr(Ze,5)===Nt?(e=Nt,Ze+=5):(e=n,0===ze&&qe(kt))),e!==n&&(t,e="true"===e),t=e}function _n(){var t,e,s,o,u;if(ze++,t=Ze,39===r.charCodeAt(Ze)?(e=Dt,Ze++):(e=n,0===ze&&qe(Pt)),e!==n){for(s=Ze,o=[],r.substr(Ze,2)===Ft?(u=Ft,Ze+=2):(u=n,0===ze&&qe(Ut)),u===n&&(Mt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(qt)));u!==n;)o.push(u),r.substr(Ze,2)===Ft?(u=Ft,Ze+=2):(u=n,0===ze&&qe(Ut)),u===n&&(Mt.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(qt)));(s=o!==n?r.substring(s,Ze):o)!==n?(39===r.charCodeAt(Ze)?(o=Dt,Ze++):(o=n,0===ze&&qe(Pt)),o!==n?(t,t=e=s.replace(/''/g,"'")):(Ze=t,t=n)):(Ze=t,t=n)}else Ze=t,t=n;return ze--,t===n&&(e=n,0===ze&&qe(zt)),t}function On(){var t,e,s,o,u,a;if(t=Ze,e=Ze,s=Ze,ae.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(ce)),o===n&&(o=null),o!==n){if(u=[],Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt)),a!==n)for(;a!==n;)u.push(a),Kt.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(Vt));else u=n;u!==n?s=o=[o,u]:(Ze=s,s=n)}else Ze=s,s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e=parseInt(e)),t=e}function Rn(){var t,e,s,o,u,a,c,i;if(t=Ze,e=Ze,ze++,s=Tn(),ze--,s===n?e=void 0:(Ze=e,e=n),e!==n)if(s=Ze,ze++,o=Zn(),ze--,o===n?s=void 0:(Ze=s,s=n),s!==n){if(o=Ze,u=Ze,fe.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(le)),a!==n){for(c=[],he.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(pe));i!==n;)c.push(i),he.test(r.charAt(Ze))?(i=r.charAt(Ze),Ze++):(i=n,0===ze&&qe(pe));c!==n?u=a=[a,c]:(Ze=u,u=n)}else Ze=u,u=n;(o=u!==n?r.substring(o,Ze):u)!==n?(t,t=e=o):(Ze=t,t=n)}else Ze=t,t=n;else Ze=t,t=n;return t}function Zn(){var t,e,s,o,u,a,c,i,f,l,h,p,A,d;return t=Ze,e=Ze,(s=jn())!==n&&(o=jn())!==n?(45===r.charCodeAt(Ze)?(u=re,Ze++):(u=n,0===ze&&qe(te)),u===n&&(u=null),u!==n&&(a=jn())!==n?(45===r.charCodeAt(Ze)?(c=re,Ze++):(c=n,0===ze&&qe(te)),c===n&&(c=null),c!==n&&(i=jn())!==n?(45===r.charCodeAt(Ze)?(f=re,Ze++):(f=n,0===ze&&qe(te)),f===n&&(f=null),f!==n&&(l=jn())!==n?(45===r.charCodeAt(Ze)?(h=re,Ze++):(h=n,0===ze&&qe(te)),h===n&&(h=null),h!==n&&(p=jn())!==n&&(A=jn())!==n&&(d=jn())!==n?e=s=[s,o,u,a,c,i,f,l,h,p,A,d]:(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n),t=e!==n?r.substring(t,Ze):e}function jn(){var t,e,s,o,u,a;return t=Ze,e=Ze,Ae.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(de)),s!==n?(Ae.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(de)),o!==n?(Ae.test(r.charAt(Ze))?(u=r.charAt(Ze),Ze++):(u=n,0===ze&&qe(de)),u!==n?(Ae.test(r.charAt(Ze))?(a=r.charAt(Ze),Ze++):(a=n,0===ze&&qe(de)),a!==n?e=s=[s,o,u,a]:(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n)):(Ze=e,e=n),t=e!==n?r.substring(t,Ze):e}function Nn(){var t,e,s,o;if(t=Ze,e=Ze,s=[],ge.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(me)),o!==n)for(;o!==n;)s.push(o),ge.test(r.charAt(Ze))?(o=r.charAt(Ze),Ze++):(o=n,0===ze&&qe(me));else s=n;return(e=s!==n?r.substring(e,Ze):s)!==n&&(t,e={val:e}),t=e}function kn(){var t,e,s,o;return t=Ze,(e=Pn())!==n?(44===r.charCodeAt(Ze)?(s=",",Ze++):(s=n,0===ze&&qe(Le)),s!==n&&(o=Pn())!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t}function zn(){var t,e,s,o;return t=Ze,(e=Pn())!==n?(40===r.charCodeAt(Ze)?(s="(",Ze++):(s=n,0===ze&&qe(Be)),s!==n&&(o=Pn())!==n?t=e=[e,s,o]:(Ze=t,t=n)):(Ze=t,t=n),t}function Dn(){var t,e,s;return t=Ze,(e=Pn())!==n?(41===r.charCodeAt(Ze)?(s=")",Ze++):(s=n,0===ze&&qe(Se)),s!==n?t=e=[e,s]:(Ze=t,t=n)):(Ze=t,t=n),t}function Pn(){var t,e,s;for(ze++,t=Ze,e=[],_e.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Oe));s!==n;)e.push(s),_e.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Oe));return t=e!==n?r.substring(t,Ze):e,ze--,t===n&&(e=n,0===ze&&qe(Te)),t}function Fn(){var t,e,s;if(ze++,t=Ze,e=[],_e.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Oe)),s!==n)for(;s!==n;)e.push(s),_e.test(r.charAt(Ze))?(s=r.charAt(Ze),Ze++):(s=n,0===ze&&qe(Oe));else e=n;return t=e!==n?r.substring(t,Ze):e,ze--,t===n&&(e=n,0===ze&&qe(Re)),t}const Un=Object.assign,{strict:Mn,minimal:qn}=t,In=[];let Yn,Xn;const Jn=["$value"],Qn=t.safeNumber||function(r){const t=Number(r);return Number.isSafeInteger(t)?t:r},Wn=t.standardBase64||function(r){return Buffer.from(r,"base64").toString("base64")},Gn=r=>t=>r===t||r.as&&t.as&&r.as===t.as||t.as&&r.ref&&t.as===r.ref[r.ref.length-1]||r.ref&&t.ref&&r.ref.join("")===t.ref.join(""),Hn=r=>t=>{if(Array.isArray(t))return t.map(Hn(r));const e=t.ref&&r.find((r=>r.as&&r.func&&r.as===t.ref[0]));return e||t},Kn=r=>t=>Array.isArray(t)?t.map(Kn(r)):t.ref&&!r.find(Gn(t))?{val:null}:t,Vn=(r,t)=>{if(1===t.ref.length)r.find(Gn(t))||r.push(t);else{const e=t.ref.shift(),n=r.find((r=>r.ref&&r.ref[0]===e));if(n)Vn(n.expand,t);else{const n={ref:[e],expand:[]};Vn(n.expand,t),r.push(n)}}},rs=(r,t,e=!1)=>{let n=ns({from:r.from},t,e);if(Array.isArray(n))for(let t=0;t<n.length;t++)n[t]=ts(n[t],r,e);else n=ts(n,r,e);return n},ts=(r,t,e)=>{if(!t)return r;t.apply&&delete t.apply;let n={};t.columns&&"$count"===t.columns[0].as||r.SELECT.where&&t.where||r.SELECT.limit&&t.limit||r.SELECT.orderBy&&t.orderBy||r.SELECT.search&&t.search?n.from=r:n=r.SELECT;for(const r in t)"columns"===r?(t.columns=t.columns.map((r=>n.columns&&n.columns.find((t=>r.ref&&r.ref[0]===t.as||t.ref&&r.ref&&r.ref[0]===t.ref[0]&&!r.expand))||r)),n.columns&&n.groupBy&&t.columns.push(...n.columns.filter((r=>e&&n.groupBy.find((t=>r.ref&&r.ref[0]===t.ref[0]))&&!t.columns.some((t=>t.ref&&t.ref[0]===r.as||t.ref&&r.ref&&t.ref[0]===r.ref[0]||t.as&&t.as===r.as))))||[]),n.columns=t.columns):"from"!==r&&(n[r]=t[r]);const s=[...n.columns&&n.columns.filter((r=>n.groupBy&&n.groupBy.find((t=>r.ref&&r.ref[0]===t.ref[0]))))||[],...n.columns&&n.columns.filter((r=>r&&"object"==typeof r&&"func"in r))||[]];return es(n,s,e),{SELECT:n}},es=(r,t,e)=>{t.length&&(r.columns=r.columns&&!e?r.columns.reduce(((r,e)=>{const n=t.find(Gn(e));return n&&r.push(n),r}),[]):t,r.where&&(r.where=r.where.map(Hn(r.columns)),r.groupBy&&(r.having=r.where.map(Kn(r.groupBy)),delete r.where)),r.columns=r.columns.reduce(((r,e)=>(e.ref&&e.ref.length>1&&t.find(Gn(e))?Vn(r,{ref:[...e.ref]}):r.push(e),r)),[]))},ns=(r,t,e)=>{if(!t)return;if(r.apply&&delete r.apply,t.identity&&r.from.SELECT&&(r=r.from.SELECT),(t.apply||t.where&&r.where||t.search&&r.search||t.limit&&r.limit||t.orderBy&&r.orderBy)&&(r.from={SELECT:{...r}}),t.where&&(r.where=t.where),t.search&&(r.search=t.search),t.groupBy){r.groupBy=[];for(const e of t.groupBy)r.groupBy.find(Gn(e))||r.groupBy.push(e)}t.limit&&(r.limit=t.limit),t.orderBy&&(r.orderBy=t.orderBy);const n=[...r.groupBy||[],...t.aggregate||[]];if(es(r,n,e),t.apply&&r.from&&ns(r.from.SELECT,t.apply),t.concat&&Array.isArray(t.concat)){const e=[];for(let n of t.concat){n.from=1===Object.keys(r).length?r.from:{SELECT:r};const t=ns(n,n.apply);Array.isArray(t)?e.push(...t):e.push(t)}r=e}return Array.isArray(r)?r:{SELECT:r}},ss=r=>{Yn.limit&&Yn.limit.offset&&Yn.limit.offset.val&&(r+=Yn.limit.offset.val),(Yn.limit||(Yn.limit={})).offset={val:r}},os=(r,t=!1)=>{Yn.orderBy=Yn.orderBy?t?[r,...Yn.orderBy]:[...Yn.orderBy,r]:[r]},us=(r,t)=>{for(const e of t)e.ref&&e.ref[0]===r&&e.ref.shift(),e.func&&us(r,e.args);return t};if((e=o())!==n&&Ze===r.length)return e;throw e!==n&&Ze<r.length&&qe({type:"end"}),Ie(ke,Ne<r.length?r.charAt(Ne):null,Ne<r.length?Me(Ne,Ne+1):Me(Ne,Ne))}peg$subclass(peg$SyntaxError,Error),peg$SyntaxError.buildMessage=function(r,t){var e={literal:function(r){return'"'+s(r.text)+'"'},class:function(r){var t,e="";for(t=0;t<r.parts.length;t++)e+=r.parts[t]instanceof Array?o(r.parts[t][0])+"-"+o(r.parts[t][1]):o(r.parts[t]);return"["+(r.inverted?"^":"")+e+"]"},any:function(r){return"any character"},end:function(r){return"end of input"},other:function(r){return r.description}};function n(r){return r.charCodeAt(0).toString(16).toUpperCase()}function s(r){return r.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(r){return"\\x0"+n(r)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(r){return"\\x"+n(r)}))}function o(r){return r.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(r){return"\\x0"+n(r)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(r){return"\\x"+n(r)}))}return"Expected "+function(r){var t,n,s,o=new Array(r.length);for(t=0;t<r.length;t++)o[t]=(s=r[t],e[s.type](s));if(o.sort(),o.length>0){for(t=1,n=1;t<o.length;t++)o[t-1]!==o[t]&&(o[n]=o[t],n++);o.length=n}switch(o.length){case 1:return o[0];case 2:return o[0]+" or "+o[1];default:return o.slice(0,-1).join(", ")+", or "+o[o.length-1]}}(r)+" but "+function(r){return r?'"'+s(r)+'"':"end of input"}(t)+" found."},module.exports={SyntaxError:peg$SyntaxError,parse:peg$parse};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sap/cds",
3
- "version": "6.0.1",
3
+ "version": "6.0.4",
4
4
  "description": "SAP Cloud Application Programming Model - CDS for Node.js",
5
5
  "homepage": "https://cap.cloud.sap/",
6
6
  "keywords": [